关于类加载的奇怪面试题
2017-09-05 16:34
232 查看
关于类加载的奇怪面试题
废话不说,看下面代码。在一般的代码里。如果遇到以下等情况,就会触发类加载。1.类名.静态变量
2.Class.forName(类名)
3.类名.class
触发类加载时候,首先会执行静态代码块的内容。然后再执行代码语句。
class A{ public static int value = 134; static{ System.out.println("A"); } } class B extends A{ static{ System.out.println("B"); } } public class Demo { public static void main(String args[]){ int s = B.value; System.out.println(s); } }
按理说B.value时应该触发B类的加载,结果应该是:
A B
134
但是实测的结果让帮主大吃一惊,结果是:
A
134
再观察代码,发现B.value中的value变量是A类的。所以,帮主在这里大胆的猜测一下,当遇到 类名.变量 加载时,只加载变量所在类。下面做一下测试:
class A{ public static int valueA = 134; static{ System.out.println("A"); } } class B extends A{ public static int valueB = 245; static{ System.out.println("B"); } } public class Demo { public static void main(String args[]){ int s = B.valueB; System.out.println(s); } }
得到的应该是
A
B
245
经验证,得到了预测的数据。
相关文章推荐
- 关于Java类加载父类委托机制 /双亲委派模型(附两道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于类加载的一道面试题
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 这道java关于static和类加载初始化的面试题(很经典)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于webView加载html代码 图片拦截修改
- [转]PO和VO、关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
- 关于mkdir()的一个奇怪的问题。
- 关于数据库连接出错(错误信息:[无法加载dll(oci.dll)])的解决办法
- 关于数组的几道面试题
- 关于安装ex2k7 sp2的rollup-1后,工具箱加载报错的问题
- 关于listView不同数据类型的加载
- 关于在MFC中加载PNG图片
- 关于angular的include指令,include的页面无法加载js问题解决