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代码运行顺序(类加载+对象创建).jpg

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

上一篇 下一篇

猜你喜欢

热点阅读