java复习题

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();

-----蓝天白云,家里的猫,林里的鸟,愿一切安好。
原文地址:https://www.cnblogs.com/yuqinweb/p/5716234.html