<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    面試題

    Posted on 2007-03-25 10:58 semovy 閱讀(377) 評論(0)  編輯  收藏 所屬分類: JAVA基礎
    1、Which?of?the?following?range?of?short?is?correct?
    -27?--?27-1?
    0?--?216-1?
    ?215?--?215-1?
    ?231?--?231-1?
    (c)
    題目:下面哪些是short型的取值范圍。
    短整型的數據類型的長度是16?bits,有符號。另外需要說明的是java中所有的整型(Integral)數(包括byte,short,int,long)全是有符號的。
    ?
    2、Which?declarations?of?identifiers?are?legal?
    A.?$persons
    B.?TwoUsers
    C.?*point
    D.?this
    E.?_endline
    (a,b,e)
    題目:下面哪些是合法的標識符。
    Java的標識符可以以一個Unicode字符,下滑線(_),美元符($)開始,后續字符可以是前面的符號和數字,沒有長度限制,大小寫敏感,不能是保留字。
    3、Which?statement?of?assigning?a?long?type?variable?to?a?hexadecimal?value?is?correct?
    A.?long?number?=?345L;
    B.?long?number?=?0345;
    C.?long?number?=?0345L;
    D.?long?number?=?0x345L.
    (d)
    題目:哪些是將一個十六進制值賦值給一個long型變量。
    十六進制數以0x開頭,long型數以L(大小寫均可,一般使用大寫,因為小寫的l和數字1不易區分)。
    ?
    4、Which?of?the?following?fragments?might?cause?errors?
    A.?String?s?=?"Gone?with?the?wind";
    ???String?t?=?"?good?";
    ???String?k?=?s?+?t;
    B.?String?s?=?"Gone?with?the?wind";
    ???String?t;
    ???t?=?s[3]?+?"one";
    C.?String?s?=?"Gone?with?the?wind";
    ???String?standard?=?s.toUpperCase();
    D.?String?s?=?"home?directory";
    ???String?t?=?s?-?"directory".
    (b,d)
    題目:下面的哪些程序片斷可能導致錯誤。
    A:String類型可以直接使用+進行連接運算。
    B:String是一種Object,而不是簡單的字符數組,不能使用下標運算符取其值的某個元素,錯誤。
    C:toUpperCase()方法是String對象的一個方法,作用是將字符串的內容全部轉換為大寫并返回轉換后的結果(String類型)。
    D:String類型不能進行減(-)運算,錯誤。
    ?
    5、class?Person?{
    ??????private?int?a;
    ??????public?int?change(int?m){?return?m;?}
    ????}???
    public?class?Teacher?extends?Person?{
    ??????public?int?b;
    ??????public?static?void?main(String?arg[]){
    ?????????Person?p?=?new?Person();
    ?????????Teacher?t?=?new?Teacher();
    ?????????int?i;
    ?????????//?point?x??????
    ???????}
    ????}
    Which?are?syntactically?valid?statement?at//?point?x?
    ?A.?i?=?m;
    ?B.?i?=?b;
    ?C.?i?=?p.a;????
    ?D.?i?=?p.change(30);
    ?E.?i?=?t.b.
    (d,e)
    題目:在//?point?x處的哪些申明是句法上合法的。
    A:m沒有被申明過,不能使用。
    B:雖然b是類Teacher的public成員變量,但是在靜態方法中不能使用類中的非靜態成員。
    C:a是類Person的private成員,在類外不能直接引用。
    D:change(int?m)方法是public方法,并且返回一個int型值,可以通過類的實例變量p引用并賦值給一個int型變量。
    E:b是類Teacher的public成員變量,且是int型,可以通過類的實例變量t引用并賦值給一個int型變量。
    ?
    6、Which?layout?manager?is?used?when?the?frame?is?resized?the?buttons's?position?in?the??Frame?might?be?changed?
    A.?BorderLayout
    B.?FlowLayout
    C.?CardLayout
    D.?GridLayout
    (b)
    題目:當Frame的大小被改變時Frame中的按鈕的位置可能被改變時使用的哪一個布局管理器。
    A:該布局管理器將容器劃分為五個部分,容器大小的改變不會影響其中的組件的位置而是影響他們的大小。
    B:該布局管理器根據放入其中的組件的最合適大小調整組件的位置,根據組件放入的順序安排,一行不能容納時放入下一行,因此容器的大小改變可能改變組件的位置。
    C:該布局管理器顯示放入該容器的當前頁中的組件,一次顯示一個,容器大小的改變不能影響其中組件的位置。
    D:該布局管理器將容器劃分為固定的網格,組件加入后占據一個單元,各組件的相對位置不會因為容器的大小變化而變化,改變的只是組件的大小。
    ?
    7、Given?the?following?code?fragment:
    ?????1)?public?void?create()?{
    ?????2)???Vector?myVect;
    ?????3)???myVect?=?new?Vector();??????????
    ?????4)?}
    Which?of?the?following?statements?are?true?
    A.?The?declaration?on?line?2?does?not?allocate?memory?space?for?the?variable?myVect.
    B.?The?declaration?on?line?2?allocates?memory?space?for?a?reference?to?a?Vector?object.
    C.?The?statement?on?line?2?creates?an?object?of?class?Vector.
    D.?The?statement?on?line?3?creates?an?object?of?class?Vector.
    E.?The?statement?on?line?3?allocates?memory?space?for?an?object?of?class?Vector
    (ade)
    題目:給出下面的代碼片斷。。。下面的哪些陳述為true(真)?
    A.??????第二行的聲明不會為變量myVect分配內存空間。
    B.??????第二行的聲明分配一個到Vector對象的引用的內存空間。
    C.??????第二行語句創建一個Vector類對象。
    D.?????第三行語句創建一個Vector類對象。
    E.??????第三行語句為一個Vector類對象分配內存空間。
    SL-275中指出:要為一個新對象分配空間必須執行new?Xxx()調用,new調用執行以下的操作:
    1.????為新對象分配空間并將其成員初始化為0或者null。
    2.????執行類體中的初始化。(例如在類中有一個成員聲明int?a=10;在第一步后a=0,執行到第二步后a=10)
    3.????執行構造函數。
    4.????變量被分配為一個到內存堆中的新對象的引用。
    ?
    8、Which?of?the?following?answer?is?correct?to?express?the?value?8?in?octal?number?
    A.?010
    B.?0x10
    C.?08
    D.?0x8
    (a)
    題目:下面的哪些答案可以用以表示八進制值8。
    八進制值以0開頭,以0x開頭的為十六進制值,八進制中不能出現數字8,最大只有7。
    ?
    9、Which?are?not?Java?keywords?
    A.?TRUE
    B.?sizeof
    C.?const
    D.?super
    E.?void
    (ab)
    題目:哪些不是Java關鍵字。
    A:?不是,Java中有true,但是這也不是關鍵字而是字面量(literal)。
    B:?不是,Java中不需要這個操作符,所有的類型(原始類型)的大小都是固定的。
    C、D、E都是,需要說明的是const是java中未被使用的關鍵字。
    ?
    10、Which?of?the?following?statements?are?true?
    A.?The?equals()?method?determines?if?reference?values?refer?to?the?same?object.
    B.?The?==?operator?determines?if?the?contents?and?type?of?two?separate?objects?match.
    C.?The?equals()?method?returns?true?only?when?the?contents?of?two?objects?match.
    D.?The?class?File?overrides?equals()?to?return?true?if?the?contents?and?type?of?two?separate?objects?match.
    (ad)
    題目:下面的哪些敘述為真。
    A.??????equals()方法判定引用值是否指向同一對象。
    B.??????==?操作符判定兩個分立的對象的內容和類型是否一致。
    C.??????equals()方法只有在兩個對象的內容一致時返回true。
    D.?????類File重寫方法equals()在兩個分立的對象的內容和類型一致時返回true。
    嚴格來說這個問題的答案是不確定的,因為equals()方法是可以被重載的,但是按照java語言的本意來說:如果沒有重寫(override)新類的equals(),則該方法和?==?操作符一樣在兩個變量指向同一對象時返回真,但是java推薦的是使用equals()方法來判斷兩個對象的內容是否一樣,就像String類的equals()方法所做的那樣:判定兩個String對象的內容是否相同,而==操作符返回true的唯一條件是兩個變量指向同一對象。從這個意義上來說選擇給定的答案。從更嚴格的意義來說正確答案應該只有d。
    ?
    11、Which?statements?about?inheritance?are?true?
    A.?In?Java?programming?language?only?allows?single?inheritance.?
    B.?In?Java?programming?language?allows?a?class?to?implement?only?one?interface.
    C.?In?Java?programming?language?a?class?cannot?extend?a?class?and?implement?a?interface?together.
    D.?In?Java?programming?language?single?inheritance?makes?code?more?reliable.
    (ad)
    題目:下面關于繼承的哪些敘述是正確的。
    A.????在java中只允許單一繼承。
    B.?????在java中一個類只能實現一個接口。
    C.????在java中一個類不能同時繼承一個類和實現一個接口。
    D.????java的單一繼承使代碼更可靠。
    java中一個類只能有一個直接父類,但是可以實現多個接口,在繼承的同時可以實現接口,之所以取消多繼承的原因是多繼承使得代碼產生很多問題,而使用單一繼承則可以使代碼更可靠。
    ?
    12、
    1)?class?Person?{
    2)???public?void?printValue(int?i,?int?j)?{/*…*/?}
    3)???public?void?printValue(int?i){/*...*/?}
    4)?}
    5)?public?class?Teacher?extends?Person?{
    6)???public?void?printValue()?{/*...*/?}
    7)???public?void?printValue(int?i)?{/*...*/}
    8)???public?static?void?main(String?args[]){
    9)???????Person?t?=?new?Teacher();
    10)??????t.printValue(10);
    11)?}
    12)?}
    Which?method?will?the?statement?on?line?10?call?
    ?
    A.?on?line?2
    B.?on?line?3
    C.?on?line?6
    D.?on?line?7
    (d)
    題目:第十行的聲明將調用哪些方法。
    變量t是一個Person對象,但是它是用Teacher實例化的,這個問題涉及到java的編譯時多態和運行時多態的問題,就編譯時多態來說,t實際上是一個Person類,這涉及到類型的自動轉換(將一個子類的實例賦值給一個父類的變量是不用進行強制類型轉換,反之則需要進行強制類型轉換,而且被賦值的變量實際上應該是一個子類的對象),如果對t調用了子類中新增的方法則造成編譯時錯誤編譯將不能通過,而在運行時,運行時系統將根據t實際指向的類型調用對應的方法,對于本例來說,t.print(10)將調用t實際指向的Teacher類的對應方法。在java中,可以用一個子類的實例實例化父類的一個變量,而變量在編譯時是一個父類實例,在運行時可能是一個子類實例。
    ?
    13、Which?are?not?Java?primitive?types?
    A.?short
    B.?Boolean
    C.?unit
    D.?float
    (bc)
    題目:下面哪些不是java的原始數據類型。
    Java的原始數據類型一共就八個,分別是:byte,short,int,long,boolean,char,float,double。注意這些是大小寫敏感的,而Boolean是booelan的封裝類(wrapper?class)。
    ?
    14、Use?the?operators?"<<",?">>",?which?statements?are?true?
    ?
    A.?0000?0100?0000?0000?0000?0000?0000?0000<<5?gives
    ???1000?0000?0000?0000?0000?0000?0000?0000
    B.?0000?0100?0000?0000?0000?0000?0000?0000<<5?gives
    ???1111?1100?0000?0000?0000?0000?0000?0000
    C.?1100?0000?0000?0000?0000?0000?0000?0000>>5?gives
    ???1111?1110?0000?0000?0000?0000?0000?0000
    D.?1100?0000?0000?0000?0000?0000?0000?0000>>5?gives
    ???0000?0110?0000?0000?0000?0000?0000?0000
    (ac)
    題目:使用"<<"和?">>"操作符的哪些陳述是對的。
    Java的移位操作符一共有三種,分別是”>>”,”>>>”,”<<”,執行的操作分別是有符號右移,無符號右移,左移,有符號右移的意思是說移入的最高位和原最高符號位相同,無符號右移是移入位始終補零,左移時最低位始終補零,最高位被舍棄。移位操作符另一個非常值得注意的特點是其右操作數是取模運算的,意思是說對于一個int型數據而言,對它移位32位的結果是保持不變而非變成零,即:a>>32的結果是a而不是0,同理,對long型數是對右操作數取64的模,a>>64==a;還有一點需要注意的是移位操作符”>>>”只對int型和long型有效,對byte或者short的操作將導致自動類型轉換,而且是帶符號的。
    ?
    15、Which?of?the?following?range?of?int?is?correct?
    A.?-27?--?27-1?
    B.?0???232-1?
    C.??215?--?215-1?
    D.??231?--?231-1?
    (d)
    題目:int的取值范圍是哪個。
    int型是32位的。參看第一題的論述。
    ?
    16、Which?keyword?should?be?used?to?enable?interaction?with?the?lock?of?an?object??The?flag?allows?exclusive?access?to?that?object.
    A.?transient
    B.?synchronized
    C.?serialize
    D.?static
    (b)
    題目:下面的哪些關鍵字通常用來對對象的加鎖,該標記使得對對象的訪問是排他的。
    由于java是多線程的語言,多個線程可以”同時”訪問同一數據區,而在處理某些數據時不希望其它的線程修改那些數據的值或者某些操作是不可打斷的,要做到這個,可以使用synchronized關鍵字聲明這一點。
    ?
    17、Which?is?the?return?type?of?the?method?main()?
    A.?int
    B.?void
    C.?boolean
    D.?static
    (b)
    題目:main()方法的返回類型是什么?
    java中,程序運行的入口就是main()方法,它必須是這樣的形式:public?static?void?main(String?args[])。但是嚴格來講這個題目的答案還可以加上a和c,因為并沒有限定是程序入口的main()方法,而main()方法是可以重載的。一般意義上的main()當然就是指我們剛開始所說的main()方法了。
    ?
    18、Given?the?following?code:
    if?(x>0)?{?System.out.println("first");?}
    else?if?(x>-3)?{?System.out.println("second");?}
    ?????else?{?System.out.println("third");?}
    Which?range?of?x?value?would?print?the?string?"second"?
    A.?x?>?0
    B.?x?>?-3
    C.?x?<=?-3
    D.?x?<=?0?&?x?>?-3
    (d)
    題目:給出下面的代碼:

    x的取值在什么范圍內時將打印字符串"second"。
    x>0時打印"first",x>-3&&x<=0時打印"second",x<=-3時打印"third"。
    這個題目沒有什么難的,只要理解if語句的語法就可以了。
    ?
    19、Given?the?following?expression?about?TextField?which?use?a?proportional?pitch?font.?
    TextField?t?=?new?TextField("they?are?good",40);
    Which?statement?is?true?
    ?
    A.?The?displayed?string?can?use?multiple?fonts.
    B.?The?maximum?number?of?characters?in?a?line?will?be?40.
    C.?The?displayed?width?is?exactly?40?characters.
    D.?The?user?can?edit?the?characters.
    (d)
    題目:給出以下關于一個使用適當的字符間距的字體的TextField的表達式。

    哪些敘述是對的?
    A.??????被顯示的字符串可以使用多種字體。
    B.??????一行中最大的字符數是40
    C.??????顯示的寬度正好是40個字符寬。
    D.?????用戶可以編輯字符
    對于TextField的該種形式的構造函數來說,前一個參數是文本域中初始的字符串的顯示值,而后一個是推薦的顯示寬度,以列數表示,在構造文本域的時候會將這個大小設置為最佳大小,如果容器的限制使得文本域不能顯示這么多也沒有辦法,一般來說是比這個大小大的,而且即使寬度很小,你也可以在文本域的一行中輸入很長的字符串,只有你不使用回車,在超過顯示寬度后文本域會自動出現水平滾動條(沒有被設置為關閉,缺省是不關閉的),而文本域的缺省編輯方式是可編輯的,一個文本域只能使用一種字體,這個字體可以在運行的過程中動態的改變,但是文本域中的所有字符串都將使用這個字體顯示。
    ?
    20、Which?statements?about?the?garbage?collection?are?true?
    ?
    A.?The?program?developer?must?create?a?thread?to?be?responsible?for?free?the?memory.
    B.?The?garbage?collection?will?check?for?and?free?memory?no?longer?needed.
    C.?The?garbage?collection?allow?the?program?developer?to?explicity?and?immediately?free?the?memory.
    D.?The?garbage?collection?can?free?the?memory?used?java?object?at?expect?time.
    (b)
    題目:關于垃圾收集的哪些敘述是對的。
    A.??????程序開發者必須自己創建一個線程進行內存釋放的工作。
    B.??????垃圾收集將檢查并釋放不再使用的內存。
    C.??????垃圾收集允許程序開發者明確指定并立即釋放該內存。
    D.?????垃圾收集能夠在期望的時間釋放被java對象使用的內存。
    Java語言將內存分配和釋放的工組交給了自己,程序員不必做這些工作,它提供一個系統級的線程跟蹤每個內存的分配,在JVM的空閑處理中,垃圾收集線程將檢查和釋放不再使用的內存(即可以被釋放的內存)。垃圾收集的過程在java程序的生存期中是自動的,不需要分配和釋放內存,也避免了內存泄漏。可以調用System.gc()方法建議(suggest)JVM執行垃圾收集以使得可被釋放的內存能立即被使用,當此方法返回的時候,JVM已經做了最大的努力從被丟棄的對象上回收內存空間。程序員不能指定收集哪些內存,一般而言也不用關心這個問題,除非是程序的內存消耗很大,特別是有很多臨時對象時可以“建議“進行垃圾收集以提高可用內存。需要指出的是調用System.gc()方法不能保證JVM立即進行垃圾收集,而只能是建議,因為垃圾收集線程的優先級很低(通常是最低的)。




    無論你是個新手,還是程序設計方面的專家,你都會驚異于Sun公司Java的無窮魅力。Java帶給你的并不僅僅是面向對象、開放、平臺無關、易用、安全和“Write once, run anywhere”等軟件開發方面的優勢,更重要的一點是,它提供了一種新穎的表達思想的方式,一種全新的思維模式。隨著待解決問題的規模不斷膨脹,Java徹底的面向對象思想的靈活性就會凸現出來。毋庸置疑,Java是你開發大型軟件時最得心應手的利器或是你轉行IT的入門首選。

    SCJP考試簡介

    ·考試方式

    全英文試題,以電腦作答,在授權的Prometric考試中心參加考試

    考試編號:310-025

    先決條件:無

    考試題型:復選、填空和拖拽匹配

    題量:59

    及格標準:61%

    時限:120分鐘

    費用:1250元

    ·要求具備的能力

    使用Java編程語言創建Java應用程序和applets。

    定義和描述垃圾搜集,安全性和Java虛擬機(JVM)。

    描述和使用Java語言面向對象的特點。

    開發圖形用戶界面(GUI)。利用Java支持的多種布局管理。

    描述和使用Java的事件處理模式。

    使用Java語言的鼠標輸入、文本、窗口和菜單窗口部件。

    使用Java的例外處理來控制程序執行和定義用戶自己的例外事件。

    使用Java語言先進的面向對象特點, 包括方法重載、方法覆蓋、抽象類、接口、final、static和訪問控制。

    實現文件的輸入/輸出 (I/O)。

    使用Java語言內在的線程模式來控制多線程。

    使用Java 的Sockets機制進行網絡通信。

    試題分析

    例題1:

    Choose the three valid identifiers from those listed below.

    A. IDoLikeTheLongNameClass

    B. $byte

    C. const

    D. _ok

    E. 3_case

    解答:A, B, D

    點評:Java中的標示符必須是字母、美元符($)或下劃線(_)開頭。關鍵字與保留字不能作為標示符。選項C中的const是Java的保留字,所以不能作標示符。選項E中的3_case以數字開頭,違反了Java的規則。

    例題2:

    How can you force garbage collection of an object?

    A. Garbage collection cannot be forced

    B. Call System.gc().

    C. Call System.gc(), passing in a reference to the object to be garbage collected.

    D. Call Runtime.gc().

    E. Set all references to the object to new values(null, for example).

    解答:A

    點評:在Java中垃圾收集是不能被強迫立即執行的。調用System.gc()或Runtime.gc()靜態方法不能保證垃圾收集器的立即執行,因為,也許存在著更高優先級的線程。所以選項B、D不正確。選項C的錯誤在于,System.gc()方法是不接受參數的。選項E中的方法可以使對象在下次垃圾收集器運行時被收集。

    例題3:

    Consider the following class:

    1. class Test(int i) {

    2. void test(int i) {

    3. System.out.println(“I am an int.”);

    4. }

    5. void test(String s) {

    6. System.out.println(“I am a string.”);

    7. }

    8.

    9. public static void main(String args[]) {

    10. Test t=new Test();

    11. char ch=“y”;

    12. t.test(ch);

    13. }

    14. }

    Which of the statements below is true?(Choose one.)

    A. Line 5 will not compile, because void methods cannot be overridden.

    B. Line 12 will not compile, because there is no version of test() that rakes a char argument.

    C. The code will compile but will throw an exception at line 12.

    D. The code will compile and produce the following output: I am an int.

    E. The code will compile and produce the following output: I am a String.

    解答:D

    點評:在第12行,16位長的char型變量ch在編譯時會自動轉化為一個32位長的int型,并在運行時傳給void test(int i)方法。

    例題4:

    ?

    Which of the following lines of code will compile without error?

    A.

    int i=0;

    if (i) {

    System.out.println(“Hi”);

    }

    B.

    boolean b=true;

    boolean b2=true;

    if(b==b2) {

    System.out.println(“So true”);

    }

    C.

    int i=1;

    int j=2;

    if(i==1|| j==2)

    System.out.println(“OK”);

    D.

    int i=1;

    int j=2;

    if (i==1 &| j==2)

    System.out.println(“OK”);

    解答:B, C

    點評:選項A錯,因為if語句后需要一個boolean類型的表達式。邏輯操作有^、&、| 和 &&、||,但是“&|”是非法的,所以選項D不正確。

    例題5:

    Which two demonstrate a "has a" relationship? (Choose two)

    A. public interface Person { }

    public class Employee extends Person{ }

    B. public interface Shape { }

    public interface Rectandle extends Shape { }

    C. public interface Colorable { }

    public class Shape implements Colorable

    { }

    D. public class Species{ }

    public class Animal{private Species species;}

    E. interface Component{ }

    class Container implements Component{

    private Component[] children;

    }

    解答:D, E

    點評: 在Java中代碼重用有兩種可能的方式,即組合(“has a”關系)和繼承(“is a”關系)。“has a”關系是通過定義類的屬性的方式實現的;而“is a”關系是通過類繼承實現的。本例中選項A、B、C體現了“is a”關系;選項D、E體現了“has a”關系。

    例題6:

    Which two statements are true for the class java.util.TreeSet? (Choose two)

    A. The elements in the collection are ordered.

    B. The collection is guaranteed to be immutable.

    C. The elements in the collection are guaranteed to be unique.

    D. The elements in the collection are accessed using a unique key.

    E. The elements in the collection are guaranteed to be synchronized

    解答:A, C

    點評:TreeSet類實現了Set接口。Set的特點是其中的元素惟一,選項C正確。由于采用了樹形存儲方式,將元素有序地組織起來,所以選項A也正確。

    例題7:

    True or False: Readers have methods that can read and return floats and doubles.

    A. Ture

    B. False

    解答:B

    點評: Reader/Writer只處理Unicode字符的輸入輸出。float和double可以通過stream進行I/O.

    例題8:

    ?

    What does the following paint() method draw?

    1. public void paint(Graphics g) {

    2. g.drawString(“Any question”, 10, 0);

    3. }

    A. The string “Any question?”, with its top-left corner at 10,0

    B. A little squiggle coming down from the top of the component.

    解答:B

    點評:drawString(String str, int x, int y)方法是使用當前的顏色和字符,將str的內容顯示出來,并且最左的字符的基線從(x,y)開始。在本題中,y=0,所以基線位于最頂端。我們只能看到下行字母的一部分,即字母‘y'、‘q'的下半部分。

    例題9:

    What happens when you try to compile and run the following application? Choose all correct options.

    1. public class Z {

    2. public static void main(String[] args) {

    3. new Z();

    4. }

    5.

    6. Z() {

    7. Z alias1 = this;

    8. Z alias2 = this;

    9. synchronized(alias1) {

    10. try {

    11. alias2.wait();

    12. System.out.println(“DONE WAITING”);

    13. }

    14. catch (InterruptedException e) {

    15. System.out.println(“INTERR

    UPTED”);

    16. }

    17. catch (Exception e) {

    18. System.out.println(“OTHER EXCEPTION”);

    19. }

    20. finally {

    21. System.out.println

    (“FINALLY”);

    22. }

    23. }

    24. System.out.println(“ALL DONE”);

    25. }

    26. }

    A. The application compiles but doesn't print anything.

    B. The application compiles and print “DONE WAITING”

    C. The application compiles and print “FINALLY”

    D. The application compiles and print “ALL DONE”

    E. The application compiles and print “INTERRUPTED”

    解答:A

    點評:在Java中,每一個對象都有鎖。任何時候,該鎖都至多由一個線程控制。由于alias1與alias2指向同一對象Z,在執行第11行前,線程擁有對象Z的鎖。在執行完第11行以后,該線程釋放了對象Z的鎖,進入等待池。但此后沒有線程調用對象Z的notify()和notifyAll()方法,所以該進程一直處于等待狀態,沒有輸出。

    例題10:

    Which statement or statements are true about the code listed below? Choose three.

    1. public class MyTextArea extends TextArea {

    2. public MyTextArea(int nrows, int ncols) {

    3. enableEvents(AWTEvent.TEXT_

    EVENT_MASK);

    4. }

    5.

    6. public void processTextEvent

    (TextEvent te) {

    7. System.out.println(“Processing a text event.”);

    8. }

    9. }

    A. The source code must appear in a file called MyTextArea.java

    B. Between lines 2 and 3, a call should be made to super(nrows, ncols) so that the new component will have the correct size.

    C. At line 6, the return type of processTextEvent() should be declared boolean, not void.

    D. Between lines 7 and 8, the following code should appear: return true.

    E. Between lines 7 and 8, the following code should appear: super.processTextEvent(te).

    解答:A, B, E

    點評:由于類是public,所以文件名必須與之對應,選項A正確。如果不在2、3行之間加上super(nrows,ncols)的話,則會調用無參數構建器TextArea(), 使nrows、ncols信息丟失,故選項B正確。在Java2中,所有的事件處理方法都不返回值,選項C、D錯誤。選項E正確,因為如果不加super.processTextEvent(te),注冊的listener將不會被喚醒。

    SCJP考試中的幾點注意

    深刻理解面向對象的思想

    Java是一種純粹的面向對象的程序設計語言。在正式使用Java做開發之前,必須將我們的思維方式轉入一個徹底的面向對象的世界。做不到這一點,就無法體會Java語言的精髓,寫不出地道的Java程序。當然,你也無法徹底理解Java中的基本概念和他們之間的聯系與區別,如例題3、例題5。你可以學到Java的語法規則,卻不能看到Java的靈魂。

    對概念細節的精確把握

    通過例題我們可以看到,SCJP的考察點相當細致。如例題1、2、4、7、8。所以只有對Java的概念、語法、規則了然于心,才能在考場上應對自如。

    適量的練習

    程序設計是一項實踐性很強的技術。只有上機實踐,才能使課本中的理論、頭腦中的思想通過你的雙手成為一行行代碼,完成規定的目標。雖然SCJP考試不考操作與編程,但有大量的程序閱讀,如例題3、4、9、10。如果你自己寫過許多代碼的話,這種題就是小菜一碟。

    廣泛的交流

    善于交流是優秀程序員必備的技能,也是你解決疑難,提高水平的捷徑。國內外有很多與Java認證相關的優秀網站和論壇,如: www.javaranch.com, www.javaunion.net等, 都是學習Java的寶庫。同時,一些很棒的模考軟件,如Jxam、JTest、 Javacert等,以及著名的模考題如MarcusGreen的三套題均可以找到。



    (1) Two public classes in the same file. (illegal)

      同一個文件里有兩個public類。(非法)

      (2) Main method calling a non-static method. (illegal)

      在main(String[] args)方法內調用一個非靜態方法。(非法)

      (3) Methods with the same name as the constructor(s). (這種題常有)

      與Constructor(s)有相同名字的方法。

      (4) Thread initiation with classes that do not have a run() method.

      (常考之題) 初始化了一個沒有run()方法的線程類。

      (5) Local inner classes trying to access non-final vars. (illegal)

      內部類嘗試訪問非final變量(非法)

      (6) Case statements with values out of permissible range. (byte,int, short,chat)

      選擇語句case中,沒有使用允許的值。如(byte,int,short,char)等

      (7) Math class being an option for immutable classes !! (totally wrong!)

      Math類作為不可改變類。(完全錯誤) (請提意見)

      (8) instanceOf is not same as instanceof.

      instanceOf 不是 instanceof。

      (9) Private constructors. (legal)

      私有 的Constructor。 (合法)

      (10)An assignment statement which looks like a comparison.

      一個 賦值語句 看起來像 比較語句。

      比如說if(a=true),和if(a==true)。對于這種題眼睛亮一點。

      (11)System.exit() in try-catch-finally blocks. (finally 不會執行)

      在try-catch-final塊中的退出語句。 (finally不會執行)

      (12)Order of try-catch-finally blocks matters. (若順序錯的話: error: No try before catch)

      try-catch-final塊的順序問題。

      (13)main() can be declared final. (OK)

      main()方法 可以聲明為 final.

      (14) -0.0 == 0.0 is true.

      (15)A class without abstract methods can still be declared abstract

      沒有抽象方法的類,仍然可以定義為抽象類。
    (16)RandomAccessFile descends from Object and implements DataInput and Data Output.

      RandomAccessFile 類繼承Object,并且實現了DataInput和DataOutput接口。

      (17)Map does not implement Collection.

      Map 并不實現 Collection.

      (18)Dictionary is a class, not an interface.

      Dictionary 是一個類,不是接口。

      (19)Collection is an Interface where as Collections is a helper class. (這題我倒沒見過,但還真容易看混)

      Collection是一個接口,但 Collections卻是一個輔助類。

      (20)Class declarations can come in any order.

      (也就是說: class Child extends Parents{} class Parents{}這種順序是可以的.)可以以任何順序申明類。

      (21)Forward references to variables gives compiler error.

      把 reference 給 變量,會產生編譯錯誤。 (請提意見)

      (22)Multi dimensional arrays can be sparce.

      (這句話是說: 多維數組中子數組不一定必須有一定個數的元素,比如我們把一個二維數組看成一個矩陣,那么行與列中的元素可以不完整,可以不對齊.)

      (23)Arrays, whether local or class-level, are always initialized.

      數組,無論是當前的,還是類等級的,都會被初始化。

      (24)Strings are initialized to null, not empty string.

      String 是被初始化為 null,不是空字符。

      (25)An empty string is NOT the same as a null string.

      一個空字符串 不是 一個null字符。

      26)A declaration cannot be labelled.

      一個聲明語句不能被標記。

      (27)"continue" must be in a loop(for, do, while). It cannot appear in case constructs.

      “continue”已經要在一個循環里(如for,do,while),它不能在case語句中出現。

      (28)Primitive array types can never be assigned to each other, eventhough the primitives themselves can be assigned.

      (也就是說: ArrayofLongPrimitives = ArrayofIntegerPrimitives 會編譯出錯,但

      longvar = intvar 是合法的)

      Primitive(int,char,long等)數組是不能互相賦值的,即使它們本身可以。

      (29)A constructor can throw any exception.

      一個Constructor可以拋出任何異常。

      (30)Initilializer blocks are executed in the order of declaration.

      初始化塊是按照聲明的順序執行的。
    (31)Instance initializer(s) gets executed ONLY IF the objects are constructed.

      實例初始化語句塊只有在它建立后才會被執行。

      (32)All comparisons involving NaN and a non-Nan would always result false.(對大多數朋友來說這可是個盲點噢)

      所有關于 NaN(Not a Number) 和 non-NaN 的比較,都返回false.這條很重要。

      (33)Default type of a numeric literal with a decimal point is double.

      我在這里把Java成員變量默認初始化原則寫一下:

      成員變量類型  取值

      byte      0

      short     0

      int      0

      long      0L

      char      '\u0000'

      float     0.0F

      double     0.0D

      boolean    false

      所有引用類型  null

      (34)integer (and long ) operations / and % can throw ArithmeticException while float / and % will never, even in case of division by zero.

      integer和long 操作 /和% 的話, 會拋出ArithmeticException,但是 float形不

      會,即使是除以0。

      (35)== gives compiler error if the operands are cast-incompatible.

      ==會產生編譯錯誤,如果兩邊 不兼容的話。

      (36)You can never cast objects of sibling classes( sharing the same parent), even with an explicit cast.

      你永遠不可能 轉化具有同一個超類的類的對象,即使是刻意轉化。

      class A

      class sonA extends A

      對這種情況:

      sonA 和 daughterA 之間不能相互轉化。

      即:sonA son = (sonA) daughterA();是非法的。

      而:sonA son = (sonA) A();A father = (A) sonA();是合法的。
    (37)equals returns false if the object types are different.It does not raise a compiler error.

      equals() 返回 false 如果對象類型不同,但不產生 編譯錯誤。

      (38)No inner class can have a static member.(but static inner class can)

      沒有內部類可以擁有靜態成員。(但靜態內部類可以)

      (39)File class has NO methods to deal with the contents of the file.(also the existing directory)

      File類沒有 任何 處理文件內容的方法。(當然,存在的目錄也一樣)

      (40)InputStream and OutputStream are abstract classes, while DataInput and DataOutput are interfaces.

      InputStream 和 OutputStream 是 抽象類,是 DataInput 和 DataOutput是 接口

    主站蜘蛛池模板: 亚洲JIZZJIZZ妇女| 亚洲天天做日日做天天欢毛片| 亚洲免费在线视频播放| 久草免费福利视频| 亚洲国产成人片在线观看| 国产日韩AV免费无码一区二区三区| 俄罗斯极品美女毛片免费播放| 亚洲夂夂婷婷色拍WW47| 成人黄动漫画免费网站视频| 亚洲色偷精品一区二区三区 | 国产精品视频白浆免费视频| 亚洲精品无码午夜福利中文字幕 | 亚洲精品无码久久毛片波多野吉衣| 久久久久久久久久国产精品免费| 亚洲AV日韩AV天堂久久 | 啦啦啦手机完整免费高清观看| 亚洲无人区码一二三码区别图片 | 女人张腿给男人桶视频免费版| 亚洲人成无码网站在线观看| 日韩电影免费在线| 国产成人综合亚洲绿色| 亚洲人成无码网站久久99热国产| CAOPORM国产精品视频免费| 亚洲理论电影在线观看| 日韩精品内射视频免费观看| 亚洲免费视频网址| 婷婷综合缴情亚洲狠狠尤物| 国产免费一区二区视频| 亚洲另类小说图片| 国产片免费在线观看| 久久精品无码免费不卡| 精品亚洲aⅴ在线观看| 最近的免费中文字幕视频| 免费一级毛片在线播放视频免费观看永久 | 亚洲av永久综合在线观看尤物| 在线播放免费播放av片| 久久嫩草影院免费看夜色| 91嫩草私人成人亚洲影院| 麻豆成人精品国产免费| 特级做A爰片毛片免费看无码| 亚洲人成人77777网站不卡|