Java 中可以通過初始化塊進行數據賦值。如:
在類的聲明中,可以包含多個初始化塊,當創建類的實例時,就會依次執行這些代碼塊。如果使用 static 修飾初始化塊,就稱為靜態初始化塊。
需要特別注意:靜態初始化塊只在類加載時執行,且只會執行一次,同時靜態初始化塊只能給靜態變量賦值,不能初始化普通的成員變量。
我們來看一段代碼:
運行結果:
通過輸出結果,我們可以看到,程序運行時靜態初始化塊最先被執行,然后執行普通初始化塊,最后才執行構造方法。由於靜態初始化塊只在類加載時執行一次,所以當再次創建對象 hello2 時並未執行靜態初始化塊。
任務
小伙伴們,做個練習加深對靜態初始化塊的理解吧!
在編輯器中,分別通過構造方法、初始化塊和靜態初始化塊對變量進行初始化賦值。
將第 8、20、34 行中代碼補充完整
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(); } }