类的加载分三个过程,加载、连接、初始化,同时在连接也分为三步骤:验证、准备、解析。 如下图所示
加载
指的就是加载本地的class文件
连接
**验证:**验证.class文件是否合法
**准备:**为static变量赋初始化默认值
**解析:**用一段代码来解释
Class A{
public void callB(){
b.bMethod();
};
}
Class B{
public void bMethod(){
......
};
}
在解析类的时候,b.bMethod()就是符号引用,最近会被替换成指成bMethod的指针Pointer就是直接引用
初始化
为变量赋正确的初始值,这一步与连接中的准备看似相同,实则不同
例如public static int a = 10;
a这个变量先在准备阶段赋默认值为0,然后在初始化阶段赋初始值为10。
别的类型同样这种方式加载。