- 初始化阶段就是执行类过早期方法
()方法的过程 - 此方法不需要定义,是javac编译器自动收集类中的所有类变量的显式赋值和静态代码块,合并为一个初始化方法
- 构造器的指令是按照字节码出现顺序执行的。
()不同于类的构造器 () (任何一个类声明以后,内部至少存在一个类的构造器),如果没有静态变量则不会生成 ()类构造器方法。 - 如果父类也具有clinit,则jvm必须保证在子类的clinit执行之前父类clinit一定执行完毕
- 虚拟机必须保证一个类的clinit方法在多线程下被同步加锁。一个类的clinit只会被加载一次。