读书人

JVM的种和对象初始化的底层机制

发布时间: 2012-07-01 13:15:00 作者: rapoo

JVM的类和对象初始化的底层机制
类的生命周期


上图展示的是类生命周期流向;在本文里,我只打算谈谈"类的初始化"以及"对象实例化"两个阶段。

1.static语句快只执行一次

静态初始化块只会在第一次装入系统的时候运行,当再次实例化的时候就不需要再执行了,因为已经存在了



静态代码块是在类初始化的时候被执行的,和类的实例化次数没有关系。static语句快只执行一次。静态块和静态变量都是在compile的时候已经编译好了,注意看生成的二进制文件就明白了。

2.类初始化是按照静态域或静态块在源码中出现的顺序去执行



类初始化是按照静态域或静态块在源码中出现的顺序去执行这些静态初始器的 (即谁先定义,就先初始化谁),上现程序中由于i先于y声明,所以先初始化i, 但由于i初始化时需要由y来决定,此时y又未初始化,实为初始前的值0, 所以i的最后结果为0。



3.对象实例化也是按照类变量在源码中出现的顺序去执行



4.调用静态方法时将忽略前面的调用对象或表达示

调用静态方法时将忽略前面的调用对象或表达示,只与对象或表达式计算结果的类型有关。 不会打印NullPointerException异常,而是输出"Hello world!"。


读书人网 >移动开发

热点推荐