-
只使用类时,不会进行初始化
-
在使用静态变量或创建对象时,才会进行初始化。初始化的顺序是
- 调用静态代码块(如果有的话)
- 调用普通代码块(如果有的话)
- 调用构造函数
类加载示意图
例子:
// 调用顺序是 A -> E的顺序
public class Main {
public static final String a = "E";
public static void main(String[] args) {
System.out.println("D");
new Main();
}
public Main() { // 构造函数,创建对象时调用
System.out.println("C");
}
{ // 代码块,在创建对象时调用,优于构造函数。先调用代码块,后调用构造函数
System.out.println("B");
}
static { // 代码块,在创建对象时调用,优于构造函数。先调用代码块,后调用构造函数
System.out.println("A");
}
}