1. 程式人生 > >OCJP(1z0-808)題庫解析(1)

OCJP(1z0-808)題庫解析(1)

下文所有字元僅為個人觀點,如有錯誤懇請指正。

All the characters below is a personal opinion, if there is any mistake, please correct me.

1)類中的靜態成員屬於類本身。

2)String類的concat方法需要返回值。

3)考核java異常機制:

  1. 改進專案結構,分離錯誤處理程式碼與正常函式。
  2. 選擇處理錯誤的位置。
  3. 自定義異常。

4)this關鍵字表示呼叫構造方法,題中this方法沒有引數,而類中沒有無參構造器從而發生錯誤。

5)B選項super方法在main函式中調用出錯(靜態方法只能呼叫靜態方法),且引數應為n1與n2

C選項子類使用父類預設構造方法定義出錯。

E選項非靜態方法且靜態方法不能繼承。

6)關於日期的格式。

7)略。

8)ISO_DATE_TIME精確到時間。

9)args[0]為用控制檯編譯時候傳入的第一個引數。

10)11)略。

12)這裡的indexOf是屬於ArrayList類的方法,功能如下:

返回此列表中首次出現的指定元素的索引,或如果此列表不包含元素,則返回 -1。更確切地講,返回滿足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引i ,如果不存在此類索引,則返回 -1。
是否包含元素不是根據值是否相等判定,而是根據地址的比較。

13)Super

關鍵字的用法:

1.普通的直接引用,super相當於是指向當前物件的父類,這樣就可以用super.xxx來引用父類的成員。

2.子類與父類同名方法的區別呼叫。

3.引用父類的構造器,例如super(引數),需要注意的是此語句只能出現在子類構造器的第一條。

14)略。

15)知識點:一個類有唯一的私有構造器。

16)講真C和D都能執行,至於正確答案為什麼是C,以及為什麼最後需要丟擲總的異常類有待考究(或許為了預防其他異常)。

17)略。

18)switch語句規範。

19)Product p3建立了一個引用,之後初始化的過程中,將這個引用指向了p1的記憶體地址。p1和p3共同引用一個記憶體地址(引用相等),此時對p3或者p1進行的操作都會反映在兩者身上。

物件的“==”與equals(沒經過重寫,繼承於object基類)方法比較的都是記憶體地址。

20)關於java基本型別以及其預設值:

  • boolean          false
  • char                 '\uoooo'(null)
  • byte                 (byte)0
  • short                (short)0
  • int                    0
  • long                 0L
  • float                 0.0f
  • double             0.0d

21)關於丟擲異常的方式:

  1. println方法:普通預設toString方法將列印異常名以及異常詳細訊息(無訊息不將只打印異常),getMessage方法只會列印異常詳細訊息(無訊息列印null)。
  2. printStackTrace方法:將列印異常的棧軌跡(以紅色字元列印toString的內容以及報錯位置)。

22)23)24)25)26)27)略。

28) replace方法返回替代後的字串需要變數接收。

29)關於異常的處理方式:

  1. 捕獲:通過trycatchfinaly關鍵字的語句塊捕獲處理檢查性異常。
    try{
      // 程式程式碼
    }catch(異常型別1 異常的變數名1){
      // 程式程式碼
    }catch(異常型別2 異常的變數名2){
      // 程式程式碼
    }finally{
      // 程式程式碼
    }
  2. 丟擲:處理不了的異常或者要轉型的異常,在方法的宣告處通過throws語句宣告異常throw關鍵字丟擲異常。
    public class className
    {
       public void withdraw(double amount) throws RemoteException,
                                  InsufficientFundsException
       {
           // Method implementation
       }
       //Remainder of class definition
    }

30)31)32)略。

33)關於foreach迴圈的語法糖(Syntactic Sugar)。

34)略。

35)pdf中解析說的很清楚,就翻譯一下:當一個抽象類被繼承的時候,子類往往實現了其父類的所有抽象方法,如果不這麼做,子類必須也為抽象類。

36)二維陣列length方法返回行數。

37)物件"="是更換引用地址,nums1=nums2;使nums1的引用指向了nums2的記憶體地址,與之前的引用地址(包括限制的長度)不再有關聯。

38)引數生命週期。

39)見第20提題解析。

40)41)略。

42)答案錯誤,應該選擇B。

43)關於Java8的lambda表示式與函式式介面的應用。

44)見第29題對異常的處理方式。

Runtime Exception
在定義方法時不需要宣告會丟擲runtime exception; 在呼叫這個方法時不需要捕獲這個runtime exception(被JVM處理);runtime exception是從java.lang.RuntimeExceptionjava.lang.Error類衍生出來的。 例如:nullpointexceptionIndexOutOfBoundsException就屬於runtime exception

Exception:
定義方法時必須宣告所有可能會丟擲的exception; 在呼叫這個方法時,必須捕獲它的checked exception,不然就得把它的exception傳遞下去;exception是從java.lang.Exception類衍生出來的。例如:IOExceptionSQLException就屬於Exception

46)args[0]是用命令列編譯執行java程式時,傳入的第一個引數。

47)Java運算子優先順序

48)StringBuilderappend方法:

StringBuilder sb=new StringBuilder("abc");
sb.append("123");
System.out.println(sb);//輸出abc123

insert方法:

StringBuilder sb=new StringBuilder("abc");
sb.insert(0,"123");//第一個引數是位置
System.out.println(sb);//輸出123abc

49)trim方法返回值需要變數來接收。

50)略。