铁马冰河2000

导航

Java基础练习题-错题集(一)

(1) 下面代码输出结果是?

class C {
    C() {
        System.out.print("C");
    }
}

class A {
    C c = new C();

    A() {
        this("A");
        System.out.print("A");
    }

    A(String s) {
        System.out.print(s);
    }
}

class Test extends A {
    Test() {
        super("B");
        System.out.print("B");
    }

    public static void main(String[] args) {
        new Test();
    }
}

选项: A. BB   

    B. CBB 

    C. BAB 

    D. None of the above

(2)  以下哪一个不是赋值符号?

选项: A. +=   

    B. <<= 

    C. <<<=

    D. >>>= 

(3)  以下哪些方法是Object类中的方法?

选项: A. clone() 

    B. toString()

    C. wait()

    D. finalize()

===================================================解题分析==============================================

(1) 解析   正确答案 B
初始化过程是这样的: 
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 
 
(1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C 
(2)super("B"); 表示调用父类的构造方法,不调用父类的无参构造函数,输出B 
(3) System.out.print("B"); 
 所以输出CBB
 
(2) 解析   正确答案 C
>>   为带符号右移,右移后左边的空位被填充为符号位
>>> 为不带符号右移,右移后左边的空位被填充为0
没有<<<
<< 左移,左移后右边总是补0
 
A.很明显是赋值符号
B.<<=左移赋值
C.不是
D.>>>= 右移赋值,左边空出的位以0填充
 
(3) 解析   正确答案 ABCD
Object 类中方法及说明如下:
  registerNatives()   //私有方法
  clone()    //创建并返回此对象的一个副本。
  equals(Object obj)     //用于确认两个对象是否“相同”。
  finalize()    //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
  getClass()    //返回此 Object 的运行类。
  hashCode()    //用于获取对象的哈希值。
notify()    //唤醒在此对象监视器上等待的单个线程。   
notifyAll()     //唤醒在此对象监视器上等待的所有线程。   
toString()   //返回该对象的字符串表示。   
wait(long timeout)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。   
wait(long timeout, int nanos)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait()    //用于让当前线程失去操作权限,当前线程进入等待序列

 

 

posted on 2022-08-21 22:32  铁马冰河2000  阅读(88)  评论(0编辑  收藏  举报