static 变量,static代码块,构造函数执行顺序

在看到线程安全类得书籍时发现以前遗漏下来得一个问题


在发布时:尽量使用 private final 将可变对象 初始化成不可变对象。利用构造方法 达到线程安全得目的。下面分享一个加载认知:


class Test {

    public static int num = 0;

    //构造函数
    public Test() {
        num++;
        System.out.println("构造函数执行完毕");
    }

    static {
        System.out.println("没有赋值前我的值是:" + num);
        num = 10;
        System.out.println("静态代码块执行完毕");
    }
}

class Main {
    public static void main(String args[]) {
        Test a = new Test();
        System.out.println(a.num);
        Test b = new Test();
        System.out.println(b.num);
    }
}  

static int num 在初始化类之前就已经完成初始化,

其次 执行 静态代码块。

最后执行构造方法


当我对Test 对象实例话得时候 第一次会执行 static代码块内容。。

而构造方法会一直执行。。

以下是打印结果:


E:\develop\java7\jdk1.7.0_17\bin\java "-javaagent:E:\develop\idea2017\IntelliJ IDEA 2017.2.5\lib\idea_rt.jar=61586:E:\develop\idea2017\IntelliJ IDEA 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath E:\develop\java7\jdk1.7.0_17\jre\lib\charsets.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\deploy.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\access-bridge-64.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\dnsns.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\jaccess.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\localedata.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\rosysenv.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\sunec.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\sunjce_provider.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\sunmscapi.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\ext\zipfs.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\javaws.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\jce.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\jfr.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\jfxrt.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\jsse.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\management-agent.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\plugin.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\resources.jar;E:\develop\java7\jdk1.7.0_17\jre\lib\rt.jar;F:\test\out\production\test Main
没有赋值前我的值是:0
静态代码块执行完毕
构造函数执行完毕
11
构造函数执行完毕
12


Process finished with exit code 0


猜你喜欢

转载自blog.csdn.net/qq_18730505/article/details/78893942