Java中关于static关键字的思考

群友分享了一到面试题,问代码的执行顺序


执行结果是:
2
3
a=110,b=0
1
4

那么为什么是这样的呢? 这道面试题,其实考察的是static关键字的理解。
简单总结来说:静态块是按顺序执行的,构造代码块总是在于构造器之前执行。

下面是对代码进行断点调试的执行顺序进行标记

public class MagimaTest {
    public static void main(String[] args) {// 13
        magimaFunction();// 10
    }

    static MagimaTest st = new MagimaTest();// 1   7
    static {// 9
        System.out.println("1");// 8
    }
    {
        System.out.println("2");// 2
    }

    MagimaTest() {// 6
        System.out.println("3");// 4
        System.out.println("a=" + a + ",b=" + b);// 5
    }

    public static void magimaFunction() {// 12
        System.out.println("4");// 11
    }

    int a = 110;// 3
    static int b = 112;// 9
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容