决定认真的看一遍《Thinking in Java》

前两天同事给我发了一封邮件,好像是从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 {
 Test1(){
  System.out.print("5");
 }
 
 static{
  System.out.print("6");
 }
}

我认为答案是635214,结果却是635142,受打击啊。后来同事告诉我"同类中按静态、非静态循序、构造,继承按类父类到子类的循序"。为了测试我是否理解,又给我出了一道题:

 public class Test2 extends Test1{

    {
        System.out.print("1");
    }

    Test2(){
        super(3);
        System.out.print("2");
    }

    static{
        System.out.print("3");
    }

    {
        System.out.print("4");
    }

    public static void main(String[] args) {
        System.out.print("7");
        new Test2();
    }
}

class Test1 {

    Test1(int i){
        System.out.print("5"); 
    }
    static{
        System.out.print("6");
    }
}

结果我又错了,正确的答案是6375142。

于是我狂受打击!看来有必要认真地看一遍《Thinking in Java》啦,这本书大四的时候买的,却一直没有仔细看过,只是草草翻了一下。而且我又总是太功利,喜欢看那些立即见效的书,现在看来还是不行啊。跟我情况一样的朋友,一起回过头来看《Thinking in Java》,也好互相交流互相学习啊。

欢迎关注我的微信公众号:

 

如无特殊说明,文章均为本站原创,转载请注明出处!

发表评论

邮箱地址不会被公开。 必填项已用*标注