类初始化时机以及被动引用
1. 根据java虚拟机规范,严格规定了四种情况必须立即对类进行‘初始化’。
-
- 当程序进行new对象,读取,设置和调用类的不被final修饰的静态字段和方法。
-
- 初始化一个类,他的父类还没有进行初始化,则先初始化父类。
-
- 使用反射调用,如果类还没有进行初始化,需要先初始化这个类。
-
- 当虚拟机启动时,用户需要启动main方法,则main所在的这个类是需要进行初始化的。
-
- 引用类被final static 同时修饰的字段,是不会造成类初始化的,因为被final static 修饰的字段会在编译期间进入常量池。
-
- 通过子类调用父类的静态字段,子类不会因此初始化,因为调用静态字段只会初始化这个静态字段所存在的类。
-
- 创建某个引用类型的类数组,是不会触发这个类初始化的,因为他会创建一个数组类型,并不是这个类类型,同时这个数组拥有的也不是这个类的方法,而是数组的方法。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- parallels|parallels desktop 解决网络初始化失败问题
- 为什么你的路演总会超时()
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 使用composer自动加载类文件
- 一个健康的APP和健全的人格大体类似
- (30)感赏日记20190703|(30)感赏日记20190703 暑假是补充心理营养最好的时机哦
- 种树郭橐驼传(文言句式+古今异义+词类活用+通假字)
- 归乡-序章(世界伊始,人类无所依靠,我的故事就从这里开始...)