1.类加载机制过程:
- 加载class文件,由类加载器加载,类加载器机制采用双亲委派机制,由自定义类加载器抛给系统类加载器,加载失败在由自己加载。
- 连接阶段:验证–准备–解析
验证:简单来说目的是验证class字节码的安全性。
准备:此时,静态常量在这个时候字符化表示,开始有一个默认值。
解析:静态常量赋值操作。
在准备解析:静态成员变量进行符号解析,有默认值,但是没有赋值初始化操作。 - 初始化:static{} 静态成员变量进行赋值操作。赋值按顺序进行。
值得一提的是,当类没有进行初始化的时候,static{}和静态成员变量的赋值操作是没有进行的。也就是类加载没有进行到初始化阶段。
注意:调用静态成员常量是不触发初始化操作的。
下例子:
- 触发初始化的操作:
new 操作
直接调用类
反射操作
详细介绍在我的另一篇文章。