更多 Java 基础知识方面的文章,请参见文集《Java 基础知识》
按照如下的顺序执行:
-
静态代码块:
- 类加载时执行且只执行一次。因此如果该类之前已经被加载,则不执行静态代码块。
- 如果有多个静态代码块,则按照顺序依次执行。
- 如果该类继承于某个父类:
- 如果父类之前未被加载,则先执行父类的静态代码块,再执行自身的静态代码块
- 否则,直接执行自身的静态代码块
- main 方法
- 构造块:给对象进行初始化,对象一建立就运行构造快代码,且先于构造方法。
-
构造方法
- 如果该类继承于某个父类,则先执行父类的构造块和构造方法,再执行自身的构造块和构造方法
示例
public class Exec_Order_Test {
static {
System.out.println("static block 1");
}
static {
System.out.println("static block 2");
}
{
System.out.println("constructor block");
}
public Exec_Order_Test() {
System.out.println("constructor method");
}
public static void main(String[] args) {
System.out.println("main method");
Exec_Order_Test t = new Exec_Order_Test();
}
}
输出如下:
static block 1
static block 2
main method
constructor block
constructor method