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

初始化块问题

最后一行代码是再次创建对象,能理解不再执行静态初始化块,(即整个程序只执行一次)也明白构造方法会被再执行一次,(及整个程序执行两次)但是为什么初始化块也会再执行一次(即为什么初始化块整个会执行两次?)?初始化块不在构造方法里啊,为什么最后初始化块会执行两次?

提问者:慕尼黑6232582 2018-12-31 17:11

个回答

  • 慕设计9223949
    2018-12-31 19:36:39
    已采纳

    初始化块作为每个对象的一部分,而不是类的一部分(除非是静态代码块);

    因此,每创建一个对象的时候,都会走一次初始化块;

  • 慕虎4170652
    2019-01-21 11:23:53

    每次创建对象Jvm都会编译一次,而静态代码块Jvm只会编译一次,初始化代码块每次Jvm编译都会执行的。这个也解释了为什么第二次创建对象初始化代码块会再次执行哦,可以看下Jvm的运行机制,加深理解