类初始化阶段是类加载阶段的最后一个步,此时要做的操作就是执行<clinit>方法。。。。<clinit>方法是由虚拟机自动生成的。生成的条件为或者有静态语句块,或者有对类变量的赋值,否则不会生成这个<clinit>方法。
这个方法执行的时候,总是会自动收集所有类变量的赋值动作和静态语句块,编译器收集的顺序一定是先变量赋值,在静态语句块(无论他们之间的顺序如何),因此在静态语句块中就可以访问类变量的初始值了。
<clinit>方法与类的实例构造器方法不同,因为他不需要显示调用父类的实例构造器,虚拟器会保证在子类的<clinit>初始化之前,父类的<clinit>已经初始化了。
|
|