是因为构建了对象hello2吗,可是为什么构建了新对象就会再次执行呢
在创建完一次对象后程序执行时最先但只执行一次静态初始化,然后执行普通初始化块最后执行构造方法,然后再开始往下运行与该对象有关的命令,hello对象后输出了三条命令,hello2对象后面则没有命令了,故会在第二次再输出一次方法。
https://www.imooc.com/qadetail/288303
我看到了这个答案,盆友可以参考一下
我用eclipse试了一下,确实会执行,虽然我也不懂这是为什么,创建了对象hello2,但是对象并没有被使用,为什么会执行呢?如果有人已经知道答案了可以告诉我一下这是为什么吗?谢谢啦
感觉也是,又没问你们为什么静态代码块没执行。
我的理解是,创建类的对象就是执行代码块的过程,
代码块已经建立输出短语,输出顺序是优先级的问题
创建类的新的对象,还是执行同一类的代码块,只不过静态变量已经排除(只在类加载执行一次)
全都答非所问,厉害了
因为构建对象,需要对对象进行初始化,就回去调用构造函数,也就是这里的构造方法和初始化块,然后又因为静态初始化只执行一次,所以hello2初始化的时候就只有2句。
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。