(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 类中方法及说明如下: clone() //创建并返回此对象的一个副本。 equals(Object obj) //用于确认两个对象是否“相同”。 finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 getClass() //返回此 Object 的运行类。 hashCode() //用于获取对象的哈希值。 notify() //唤醒在此对象监视器上等待的单个线程。
notifyAll() //唤醒在此对象监视器上等待的所有线程。 toString() //返回该对象的字符串表示。
wait(long timeout) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait() //用于让当前线程失去操作权限,当前线程进入等待序列
标签:练习题,初始化,Java,System,错题,线程,print,父类,out From: https://www.cnblogs.com/taoxw/p/16611253.html