前两天同事给我发了一封邮件,好像是从CSDN上看来的。内容如下:
不编译执行,你预测一下输出。然后再验证一下。
public class Test2 extends Test1 { { System.out.print("1"); } Test2() { System.out.print("2"); } static { System.out.print("3"); } { System.out.print("4"); } public static void main(String[] args) { new Test2(); } } class Test1 { |
我认为答案是635214,结果却是635142,受打击啊。后来同事告诉我"同类中按静态、非静态循序、构造,继承按类父类到子类的循序"。为了测试我是否理解,又给我出了一道题:
public class Test2 extends Test1{ { Test2(){ static{ { public static void main(String[] args) { class Test1 { Test1(int i){ |
结果我又错了,正确的答案是6375142。
于是我狂受打击!看来有必要认真地看一遍《Thinking in Java》啦,这本书大四的时候买的,却一直没有仔细看过,只是草草翻了一下。而且我又总是太功利,喜欢看那些立即见效的书,现在看来还是不行啊。跟我情况一样的朋友,一起回过头来看《Thinking in Java》,也好互相交流互相学习啊。