介绍
JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:
三大步
- 装载:查找并加载类的二进制数据;(加载文件)
- 链接:
1.验证:确保被加载类的正确性;
2.准备:为类的静态变量分配内存,并将其初始化为默认值;(静态先走)
3.解析:把类中的符号引用转换为直接引用;(再走引用) - 初始化:为类的静态变量赋予正确的初始值;(赋初值)
Exercise
指出下面程序的运行结果。
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 {
public static void main(String[] args) {
A ab = new B();
ab = new B();
}
}
1a2b2b
Reference
[1] https://blog.csdn.net/weixin_42134740/article/details/81661504