一道关于java 类初始化 成员初始化的笔试题的解析
代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
java笔试题
程序执行结果如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
java笔试题结果
此笔试题考查:
JAVA的静态变量、静态方法、静态类
关于这个知识点参考如下博文:
1、JAVA的静态变量、静态方法、静态类,
http://blog.csdn.net/zhandoushi1982/article/details/8453522
2、Java类变量和成员变量初始化过程,
http://www.cnblogs.com/lmtoo/archive/2012/04/08/2437918.html
那么分析程序可知:
静态都是用来修饰类的内部成员的。比如静态方法、静态成员变量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
编译器转换成class文件后,会转换成类似下面的代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
个人理解
首先: 初始化n=0;
初始化m1, 打印 j i=0 n=0 打印 控制块 i=1 n=1 打印 m1 i=2 n=2
初始化m2, 打印 j i=3 n=3 打印 控制块 i=4 n=4 打印 m2 i=5 n=5
初始化i,打印 i i=6 n=6
初始化 静态块, 打印 静态块 i=7 n=7
静态部分初始化结束,开始执行main函数中m对象的实例化,
初始化m,打印 j i=8 n=8 打印 控制块 i=9 n=9 打印 init i=10 n=10
黑体部分即为 程序输出结果。
注:作者有限,文中若有不对之处,请批评指正。
作者:khldragon
出处:http://www.cnblogs.com/khldragon/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
俗话说,投资效率是最成功的投资。 如果您感觉我的文章质量不错,读后收获很大,感觉能为您提高 10% 的工作效率,不妨小额【赞助】我一下,让我有动力继续写出更多好文章。