两道都是选择题
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中去