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

最后一句hello2为什么还会输出两行

helloWorld hello2=new HelloWorld()这句话有什么用,为什么还会输出“通过初始化为变量num2赋值”和“通过构造方法为变量num1赋值”

提问者:慕的地8499383 2018-01-20 22:18

个回答

  • 兜底旺
    2018-04-16 13:43:28

    新创建一个类的对象,类中的代码块和方法都会被执行,但静态块只执行一次,所以hello2里面只输出2个。

  • 慕标7701856
    2018-01-20 23:20:52

    helloWorld hello2=new HelloWorld()这句话就是创建了类HelloWorld的一个对象hello2。普通来说,每一次创建类的一个对象,类中的代码块和方法都会被调用一次,HelloWorld中有三个初始化代码块,普通情况下在创建对象hello2时三种应该都调用一次,但是有一个是静态的初始代码块,这个代码块在之前创建对象hello的时候已经分配了空间,也就是已经实例化了。所以在创建对象hello2的时候没有再执行这个静态代码块。所以只输出了两行“通过初始化为变量num2赋值”和“通过构造方法为变量num1赋值”。