类被加载到虚拟中直到它被卸载会有如下生命周期
加载,验证,准备,解析,初始化,使用,卸载。
其中验证,准别,解析,统称为连接
加载,验证,准备,初始化,卸载,这五个步骤顺序是固定的。
但是解析可以在初始化之前进行解析也可以在初始化之后进行解析。
类初始化时机
1,new, getstatic, putstatic, invokestatic, 遇到这个四条指令,类没有被
初始化过的时候,将会被初始化
2,java.lang.reflect包的方法对类进行发射调用
3,初始化一个类,如果父类没有被初始化过,则先初始化
4,虚拟机启动,用户指定一个主类,初始化这个主类
这四种情况,不会同时出现,有且仅有一个进行