类的生命周期如下所示:
对于验证是验证加载的二进制文件是否符合规范,如有没有继承final类等。
准备就是为静态成员分配内存空间,并设置默认值,byte short long flloat 都是0,对象类型为null,boolean类型为false.
解析就是对于编译型常量使用直接的内存地址代替变量,如final static int a = 10;但是对于在编译的时候不能得到具体值得变量不做变换,如final static int a = Math.random()。
在完成上述工作后,就是对于静态变量的初始化。
对于静态变量的初始化时在主动使用的时候才会初始化他们。
以下6种情况是主动使用 创建类的实例,途经包括:
使用new 创建对象实例,clone等
使用反射方法 使用静态方法
使用类或者接口的静态变量,
给静态变量赋值
创建子类
把类声明为启动类,如: java Test01
这时候会初始化类的静态变量,执行静态代码块