1.下列哪种异常是检查型异常,需要在编写程序时声明?
A. NullPointerException
B. ClassCastException
C. FileNotFoundException
D. IndexOutOfBoundsException
解:C,classNotFoundException是受检异常。其他的都是运行时异常,程序员不能控制。
绿色的是非受检异常,红色是受检异常。
2.Which lines of the following will produce an error?
byte a1 = 2, a2 = 4, a3;
short s = 16;
a2 = s; // 大类型不能转化为小类型
a3 = a1 * a2; // 自动转化为int 出错
A. Line 3 and Line 4
B. Line 1 only
C. Line 3 only
D. Line 4 only
解:A。byte型是8位,short型是16位。不能将大类型转化为小类型数据
3.在java中重写方法应遵循规则的包括()
A. 访问修饰符的限制一定要大于被重写方法的访问修饰符
B. 可以有不同的访问修饰符
C. 参数列表必须完全与被重写的方法相同
D. 必须具有不同的参数列表
解:BC
访问修饰符的限制大于等于被重写的方法
override的规则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
4.下列Java代码中的变量a、b、c分别在内存的__存储区存放。
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
A. 堆区、堆区、堆区
B. 堆区、栈区、堆区
C. 堆区、栈区、栈区
D. 堆区、堆区、栈区
解:C,这里的题目意思的变量指变量实际的值而不是指它变量的引用。java所有变量对象的引用和方法中的成员变量存放在栈中,new出来的对象是存放在堆中,String类型的变量(指这里的 String a = “aa”这种形式)存放在常量池中,常量池位于堆中。
5.以下多线程对int型变量x的操作,哪个不需要进行同步()
A. ++x
B. x=y
C. x++
D. x=0
解析:前三个都至少需要先读取,再操作,非原子操作。而D的话,直接赋值。
6.以下集合对象中哪几个是线程安全的?( )
A. ArrayList
B. V