概述:
当程序主动使用某个类的时候,如果该类还未被加载到内存中,则系统会通过类的加载,类的链接,类的初始化三个步骤来对该类进行初始化。
加载,链接,初始化的解释
- 加载
将class文件字节码内容加载到内存中,并将这些静态(static)数据转换成方法区的运行时数据结构,
然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址)。
所有需要访问和使用类数据只能通过这个Class对象。这个加载过程需要类加载器参与。 - 链接
将java类的二进制代码合并到JVM的运行状态之中的过程:
- 验证:确保加载得信息符合规范
- 准备:为类变量分配内存(方法区),设置默认值
- 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程
- 初始化
初始化是对类变量赋值的操作: