static靜態初始化塊

**static可以初始化塊對數據進行賦值**
在類的聲明中,可以包含多個初始化塊,當創建類的實例時,就會依次執行這些代碼塊。如果使用 static 修飾初始化塊,就稱爲靜態初始化塊。
需要特別注意:**靜態初始化塊只在類加載時執行,且只會執行一次,同時靜態初始化塊只能給靜態變量賦值,不能初始化普通的成員變量。**
public class HelloWorld {

    String name; // 聲明變量name
    String sex; // 聲明變量sex
    static int age;// 聲明靜態變量age

    // 構造方法
    public HelloWorld () { 
        System.out.println("通過構造方法初始化name");
        name = "tom";
    }

    // 初始化塊
    { 
        System.out.println("通過初始化塊初始化sex");
        sex = "男";
    }

    // 靜態初始化塊
    static{ 
        System.out.println("通過靜態初始化塊初始化age");
        age = 20;
    }

    public void show() {
        System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age);
    }

    public static void main(String[] args) {

        // 創建對象
        HelloWorld hello = new HelloWorld();
        // 調用對象的show方法
        hello.show();   
    }
}
運行結果:
通過靜態初始化塊初始化age
通過初始化塊初始化sex
通過構造方法初始化name
姓名:tom,性別:男,年齡:20

通過結果我們可以看到程序運行時**靜態初始化塊最先被執行,然後執行普通初始化塊,最後才執行構造方法。由於靜態初始化塊只在類加載時執行一次,所以當再次創建對象 hello2 時並未執行靜態初始化塊。**
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章