静态属性、代码块的执行顺序

静态属性、静态代码块以及构造代码块的执行先后顺序

最近遇到一道Java先后调用的题(下图),程序中输出A.x和B.y的值。

代码块

如图,输出1,2。 那么是为什么呢
从主函数开始,载入A类,A类具有静态属性和静态代码块,而静态属性和静态代码块是按顺序执行,哪个在前面就先执行哪个,所以x被赋初值为0
再执行静态代码块,此时调用B类,静态属性y并未赋值而是被JVM赋了初值0,因此此时x=1,y=0.并输出“静态代码块被调用”
下一步主函数创建了A类的对象,构造代码块被调用并输出,下一步输出B.y,y被赋值 y=A.x + 1 = 1+1=2. 最后输出1和2.

因此我们可以得出结果,静态属性和静态代码块是按顺序执行,哪个在前面就先执行哪个,而构造代码块是当类对象实例化时(new时)被调用。这题还有一个知识点就是类的生命周期,下次再学习分享一下哦~
文章作者: 刘山
文章链接: http://threee-hub.github.io/2019/11/08/%E4%BB%A3%E7%A0%81%E5%9D%97/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 刘山的博客