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

为什么老师敲得代码执行了hello还会执行hello2?

为什么不执行最后一行我懂了,但我没看到调用hello2啊??

提问者:qq_熊吉君_1 2017-04-01 20:07

个回答

  • 石三春
    2017-07-10 11:01:21

    在加载一个新的对象时,会先初始化块,然后在调用构造方法。初始化块的时候,会先初始化静态类型的变量,再初始化一般变量。而静态变量在一个main方法中只会初始化一次,所以在hello2中没有num3,而且num2在num1前面。可以把hello1和hello的顺序换一下就清楚了


  • 慕粉2007546340
    2017-05-01 17:06:23

    是因为在创造Hello2时,调用了构造方法和初始化块,但由于静态初始化块只会执行一次,所以只会打印两条。

  • 迷惘的湖
    2017-04-21 13:05:57

    同问,只是创建了一个hello2的对象,为什么前面的非静态变量还会再赋值一次并打印出来呢? 是因为用构造方法创建对象的时候,会自动执行一遍前面的那段代码吗?

  • 丅一詀垨候X
    2017-04-01 20:34:50

    意思是不会执行静态初始化块,也就是不会在出现一次“通过静态初始化块为静态变量num3赋值”