问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

请问为什么最后HelloWorld hello2=new HelloWorld();会输出最后2行

请问为什么最后HelloWorld hello2=new HelloWorld();会输出最后2行

提问者:19901120 2016-07-04 19:52

个回答

  • xin_TEKABO
    2016-07-29 10:43:24

    当创建对象的实例时,就会依次执行初始化块,构造方法;

    HelloWorld hello2=new HelloWorld();//创建对象的实例,这时就调用之前的初始化代码,

    静态初始化块只能执行一次,hello1的时候已创建,所以Hello2不再创建静态初始化块的部分,所以就剩最后两行的输出了。

  • 慕粉3584973
    2016-07-04 20:29:07

    有初始化块时,先执行用静态初始化块(

    static  { 

    System.out.println("通过静态初始化块初始化age");

    age = 20;

    }

    ),再执行普通初始化块(

    System.out.println("通过初始化块初始化sex");

    sex = "男";

    }

    ),最后执行用构造方法(

    public HelloWorld() { 

    System.out.println("通过构造方法初始化name");

    name = "tom";

    }

    ),这是显示前三行的原因,最后通过对象调用了show方法(hello.show2()),所以会显示最后一行

  • 弓长王彳亍
    2016-07-04 20:13:55

    倒数第二行是因为new一个对象时会调用他的构造方法,所以输出了构造方法中的那句话;最后一行是因为调用了show()方法,hello2.show()