类的生命周期包括加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)等七个阶段,其中验证、准备和解析三个部分统称为链接(Linking)。而类的加载指的就是从加载到初始化这五个阶段。java
初始化的时候会包含静态代码块的执行和静态变量的赋值code
初始化在装载时不是必须触发的,保证在初次主动使用对象前会触发。对象
例:生命周期
class A{ static{ System.out.print("1"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub A ab = new B(); ab = new B(); } }
输出结果: 1a2b2b虚拟机
静态代码块,在虚拟机加载类的时候就会加载执行,并且只执行一次;it
非静态代码块,在建立对象的时候(即new一个对象的时候)执行,每次建立对象都会执行一次io