zoukankan      html  css  js  c++  java
  • Java静态变量、静态块、构造块、构造函数、main函数、普通代码块的执行顺序

    测试代码

    public class SingleTest {
    
        public static String v = "StaticValue";
    
        static {
            System.out.println("static静态变量:" + v);
            System.out.println("static静态块");
        }
    
        {
            System.out.println("构造块");
        }
    
        public SingleTest() {
            System.out.println("构造函数");
        }
    
        public void say() {
            System.out.println("普通方法");
        }
    
        public static void main(String[] args) {
            System.out.println("main 开始");
            SingleTest singleTest = new SingleTest();
            singleTest.say();
            System.out.println("main 结束");
        }
    }

    结果

    解释

    JVM虚拟机一启动就会仅加载一次所有static变量,之后仅加载一次所有static代码块。每当有类实例化时,构造块都会早于构造函数执行,然后再执行构造函数。

    结论

    一个类实例化时的执行顺序:
    静态变量 > 静态代码块 > 构造代码块 > 构造函数

    细化执行顺序为:
    静态变量 > 静态代码块 > main函数 > 构造代码块 > 构造函数 > 普通方法

    查看类继承时,静态块、构造块、构造函数等的执行顺序,请点击

    尊重写作权利,转载请注明出处 ^_^
  • 相关阅读:
    2019年4月18日 查询功能 2
    bzoj3601
    bzoj2693
    bzoj2440
    bzoj3529
    bzoj2820
    BZOJ2813
    BZOJ4515
    AtCoder Grand Contest 001 题解
    BZOJ2757
  • 原文地址:https://www.cnblogs.com/convict/p/14484640.html
Copyright © 2011-2022 走看看