Java代码执行顺序(从类加载到创建对象)
2019-01-10 本文已影响0人
卖糕的佛祖啊
刚开始学java,总是被各种莫名奇妙的执行顺序烦到窒息,比如以下一段经典案例:
public class StaticTest {
public static void main(String[] args) {
staticFunction();
}
static StaticTest st = new StaticTest();
static { //静态代码块
System.out.println("1");
}
{ // 实例代码块
System.out.println("2");
}
StaticTest() { // 实例构造器
System.out.println("3");
System.out.println("a=" + a + ",b=" + b);
}
public static void staticFunction() { // 静态方法
System.out.println("4");
}
int a = 110; // 实例变量
static int b = 112; // 静态变量
}/* Output:
2
3
a=110,b=0
1
4
*///
网上查了一些资料,做了一个大纲方便自己理解,算是笔记吧。

参考文章:
深入理解Java对象的创建过程:类的初始化与实例化
https://blog.csdn.net/justloveyou_/article/details/72466416
JVM类生命周期概述:加载时机与加载过程
https://blog.csdn.net/justloveyou_/article/details/72466105