java 初始化塊 靜態塊

package jvm;

public class Test3 {

    static int count=20;
    {//初始化塊
        count=12;
        System.out.println("初始化塊"+count);
    }

    static {
        count=13;
        System.out.println("靜態塊"+count);
    }
    public Test3() {
        System.out.println("創建對象"+count);
    }

    public Test3(String name) {
        System.out.println(name);
    }

    public static void main(String[] args) {
        System.out.println("根據類名獲取"+Test3.count);
        Test3 test3 = new Test3();
        System.out.println("根據生成對象獲取"+test3.count);
    }


}

靜態塊13
根據類名獲取13
初始化塊12
創建對象12
根據生成對象獲取12
執行順序 1 靜態塊 2初始化塊

註釋創建對象的代碼

    public static void main(String[] args) {
        System.out.println("根據類名獲取"+Test3.count);
    }

靜態塊13
根據類名獲取13
創建多次對象

    public static void main(String[] args) {
        System.out.println("根據類名獲取"+Test3.count);
        Test3 test3 = new Test3();
        System.out.println("根據生成對象獲取"+test3.count);
        System.out.println("=============");
        Test3 test4= new Test3();
        System.out.println("根據生成對象獲取"+test4.count);
    }

靜態塊13
根據類名獲取13
初始化塊12
創建對象12
根據生成對象獲取12
=============
初始化塊12
創建對象12
根據生成對象獲取12

初始化只有在創建對象的時候纔會執行,不創建時不會執行,並且每次創建的對象的時候都會執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章