Java的欄位初始化規律
阿新 • • 發佈:2018-11-09
package 程式碼測試; public class InitializeBlockClass { {field=200;} public int field=100; public InitializeBlockClass(int value) { this.field=value; } public InitializeBlockClass() { } } public class obj { public static void main(String[] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field); obj=new InitializeBlockClass(300); System.out.println(obj.field); } }
輸出結果為:100 300
分析
1 {field=200;} 該部分為類的初始化模組,在類中直接將語句包圍起來,直接作為類成員,像這種成員多用與初始化類的欄位。
2 在 public int field=100; 定義時初始化,所以obj.field值為100
3 obj=new InitializeBlockClass(300);
System.out.println(obj.field);
利用構造方法初始化,將field的值初始化為300,輸出為300;
4 Java欄位初始化的規律:
靜態初始化生成例項(new之後)變成你賦給他的值,先執行靜態初始化,如果沒有例項化,按照初始化和構造方法在程式中出現的順序執行。
當多個類之間有繼承關係時,建立子類物件會導致父類初始化塊的執行。