兩道都是選擇題
1,調用下面的函數的返回是(C)
public static int testt() {
try {
return 1;
}catch(Exception e){
return 2;
}finally {
return 3;
}
}
A 1,B 2 ,C 3, D 編譯錯誤
2, 下面的的程序輸出是(A)
...
List<Integer> list=new ArrayList<Integer>();
list.add(0);
List<Object> list2=list;
System.out.println(list.get(0).instanceof(Integer));
System.out.println(list2.get(0).instanceof(Integer));
...
A 編譯錯誤, B true false, C true true ,D false false
至於 原因明天來分析,其實有時候考點基礎就能考住你。
解釋:關於第一題的try catch 語句塊 需要注意一點的是在 執行try中的return之前一定會執行finally裏面的語句,在第一題中,由於現在finally裏面執行了return所以整個函數返回的值是3而不是1,詳細分析大家可以參考這篇博文
而第二題則是在考察java的泛型的複製問題,由於list是List<Integer>類型的 而list2是List<Object>類型了,這裏是兩種不同類型的泛型了, 所以也就不存在所謂的類型自動轉換問題了,要賦值的話,可以把list中的元素拿出來然後一個一個的add到list2中去