程式碼塊和靜態程式碼塊
阿新 • • 發佈:2020-09-09
程式碼塊
- 匿名程式碼塊{}
- 靜態程式碼塊static{}
靜態程式碼塊在類載入時呼叫,且只調用一次。
匿名程式碼塊在例項化物件時呼叫,且在構造方法之前呼叫。
public class Person { // 匿名程式碼塊,建立物件時呼叫,在構造方法之前 { System.out.println("Person"); } // 靜態程式碼塊,類載入時呼叫,只調用一次 static { System.out.println("Person static"); } // 無參構造 public Person() { System.out.println("Person.Person"); } } // 測試程式碼 new Person(); System.out.println(); new Person();
執行結果
Person static
Person
Person.Person
Person
Person.Person
繼承關係中的程式碼塊
// 父類 public class Person { // 匿名程式碼塊 { System.out.println("Person"); } // 靜態程式碼塊 static { System.out.println("Person static"); } public Person() { System.out.println("Person.Person"); } } // 子類 public class Man extends Person { // 匿名程式碼塊 { System.out.println("Man"); } // 靜態程式碼塊 static { System.out.println("Man static"); } // 無參構造 public Man() { System.out.println("Man.Man"); } } // 測試程式碼 new Man(); System.out.println(); new Man();
執行結果
Person static
Man static
Person
Person.Person
Man
Man.Man
Person
Person.Person
Man
Man.Man
可以看出,靜態程式碼塊只執行一次,在類載入時執行。先執行父類的靜態程式碼塊,後執行子類的靜態程式碼塊。
例項化物件時先執行父類的程式碼塊及構造方法,再執行子類的程式碼塊及構造方法。