最后一行代码是再次创建对象,能理解不再执行静态初始化块,(即整个程序只执行一次)也明白构造方法会被再执行一次,(及整个程序执行两次)但是为什么初始化块也会再执行一次(即为什么初始化块整个会执行两次?)?初始化块不在构造方法里啊,为什么最后初始化块会执行两次?
初始化块作为每个对象的一部分,而不是类的一部分(除非是静态代码块);
因此,每创建一个对象的时候,都会走一次初始化块;
每次创建对象Jvm都会编译一次,而静态代码块Jvm只会编译一次,初始化代码块每次Jvm编译都会执行的。这个也解释了为什么第二次创建对象初始化代码块会再次执行哦,可以看下Jvm的运行机制,加深理解