1.在jdk1.5的环境下,有如下4条语句:
Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59)
以下输出结果为false的是:
A.System.out.println(i01== i02);
B.System.out.println(i01== i03);
C.System.out.println(i03== i04);
D.System.out.println(i02== i04);
注意点:1.==号在基本类型的情况下比较值,引用类型比较地址 2. 在[-128,127]范围内,i01的地址会被i03引用,因为都在IntegerCache里面。超出范围或者自己new一个才会新建一个地址,例如i04
2.对文件名为Test.java的java代码描述正确的是()
class Person { String name = "No name"; public Person(String nm) { name = nm; } } class Employee extends Person { String empID = "0000"; public Employee(String id) { empID = id; } } public class Test { public static void main(String args[]) { Employee e = new Employee("123"); System.out.println(e.empID); } }
A.输出:0000
B.输出:123
C.编译报错
D.输出:No name
注意点:子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数
而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数
3.关于抽象类与接口,下列说法正确的有?
A.优先选用接口,尽量少用抽象类
B.抽象类可以被声明使用,接口不可以被声明使用
C.抽象类和接口都不能被实例化。
D.以上说法都不对
注意点:B选项,声明和实例化的区别。
声明就是等号前面的:
这样写编译运行都是没有问题的。
要说具体作用,比如你有B和C类都继承自A,而你想把他们都作为A类来使用,就可以声明:
A a1,a2
a1=new B();
a2=new C();