一、Loading
通过三种类加载器将类加载(一般自己写的类用application/Bootstrap加载)然后到链接阶段(Linking)
二、Linking
public class HelloApp {
private static int a = 1;//准备阶段 将a赋值为0 初始化阶段(initial)赋值为1
private static int b;//准备阶段 将b赋值为0 初始化赋值默认值
private static int c;//准备阶段 将c赋值为0 初始化赋值默认值
private final static int d = 1;//准备阶段 将d赋值为1
public static void main(String[] args) {
System.out.println(a);
}
}
三、Initialization
public class ClassInitTest {
private static int num = 1;
static {
num = 2;
number = 20;
}
private static int number = 10;
public static void main(String[] args) {
System.out.println(num);
System.out.println(number);
//linking : prepare ----> 0 inint ----> 20 ---->10
}
}
这里number的赋值在定义在之前,可以去了解java前向引用
" <init>“表示的是构造方法,而” <clinit>"表示的是该类中有静态的属性或者代码块