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

这段代码怎么运行的?

http://img.mukewang.com/567128a90001eb8207660567.jpg

我认为运行结果为

http://img.mukewang.com/5671294e00010faf03590105.jpg

还有不明白创建类对象hello2的意思

提问者:听见你流泪 2015-12-16 17:06

个回答

  • RockenRoll
    2015-12-16 18:10:30

    最后输出的结果应该是:

    通过静态初始化块为静态变量num3赋值
    通过初始化块为变量num2赋值
    通过构造方法为变量num1赋值
    num1:91

    num2:74

    num3:83
    通过初始化块为变量num2赋值
    通过构造方法为变量num1赋值

  • Werber丶
    2015-12-16 18:09:10

    楼上不对啊

    加载一个类时,先执行静态初始化块,再执行普通初始化块,最后执行构造方法

    所以 结果就是 num3,num2,num1,楼主说的是正确的

    为什么创建hello2?

    因为静态初始化块,在类第一次加载时执行,之后就不会执行了,但它是一直存在的,因为第一次执行之后会把它保存在内存中,所以一直存在,你可以测试一下,new hello2 的时候 不会执行“通过静态...”那句话,但输出hello2.num3时 还可以得出值是83。

  • RockenRoll
    2015-12-16 17:19:04

    应该是num1、num2、num3的顺序输出啊。你现在能理解什么是类什么是对象吗,建议你在看看前面类和对象那一章节