1. 程式人生 > >錯題整理10.10

錯題整理10.10

1.

.java檔案只能有一個類是與檔名相同,而包含的其他類不能與之相同,還需注意的是一個.java檔案最多有一個public修飾的類。這裡要與.class檔案分開,一個.class檔案有且只有一個類編譯後.class

 

2.

checked exception:指的是編譯時異常,該類異常需要本函式必須處理的,用try和catch處理,或者用throws丟擲異常,然後交給呼叫者去處理異常。

runtime exception:指的是執行時異常,該類異常不必須本函式必須處理,當然也可以處理。

Thread.sleep()丟擲的InterruptException屬於checked exception;IllegalArgumentException屬於Runtime exception;

 

3.

Integer i01=59 的時候,會呼叫 Integer 的 valueOf 方法,

1

2

3

4

5

  public static Integer valueOf(int i) {

     assert IntegerCache.high>= 127;

     if (i >= IntegerCache.low&& i <= IntegerCache.high)

     return IntegerCache.cache[i+ (-IntegerCache.low)];

     return new Integer(i); }

這個方法就是返回一個 Integer 物件,只是在返回之前,看作了一個判斷,判斷當前 i 的值是否在 [-128,127] 區別,且 IntegerCache 中是否存在此物件,如果存在,則直接返回引用,否則,建立一個新的物件。

在這裡的話,因為程式初次執行,沒有 59 ,所以,直接建立了一個新的物件。

int i02=59 ,這是一個基本型別,儲存在棧中。

Integer i03 =Integer.valueOf(59); 因為 IntegerCache 中已經存在此物件,所以,直接返回引用。

Integer i04 = new Integer(59) ;直接建立一個新的物件。

System. out .println(i01== i02); i01 是 Integer 物件, i02 是 int ,這裡比較的不是地址,而是值。 Integer 會自動拆箱成 int ,然後進行值的比較。所以,為真。

System. out .println(i01== i03); 因為 i03 返回的是 i01 的引用,所以,為真。

System. out .println(i03==i04); 因為 i04 是重新建立的物件,所以 i03,i04 是指向不同的物件,因此比較結果為假。

System. out .println(i02== i04); 因為 i02 是基本型別,所以此時 i04 會自動拆箱,進行值比較,所以,結果為真。

 

3.

A,CopyOnWriteArrayList適用於寫少讀多的併發場景

B,ReadWriteLock即為讀寫鎖,他要求寫與寫之間互斥,讀與寫之間互斥,

   讀與讀之間可以併發執行。在讀多寫少的情況下可以提高效率

C,ConcurrentHashMap是同步的HashMap,讀寫都加鎖

D,volatile只保證多執行緒操作的可見性,不保證原子性

 

4.

Iterable介面是Collection介面的父介面。

 

5.

  • A選項:
    • 通過 pageContext(PageContext類的例項,提供對JSP頁面所有物件以及名稱空間的訪問) 獲取stringBean 的值,賦給 String 型別的變數 myBean,然後通過 Jsp 表示式 處理該值。
  • bean:define
    • 題目中的 Struts 的bean:define 標籤定義了一個字串變數 stringBean ,它的值為 helloworld。
  • bean:write
    • bean:write相當於 <%=request.getAttribute("something")%> 其中 something 是屬性的名字。所以 B 錯,C對。
  • D選項:
    • 通過Jsp 表示式 獲取變數 stringBean 的值