public class Person{java
{ide
int a =6;對象
if(a>4){內存
System.out.println("Person的初始化塊局部變量a的值大於4"); it
}class
System.out.println("Person的初始化塊");變量
}程序
public Person(){總結
System.out.println("Person類的無參數構造器");static
}
public static void main(String[] args){
new Person();
}
}
程序輸出:
Person的初始化塊:局部變量a的值大於4
Person初始化塊
Person類的無參數構造器
從運行結果能夠看出,當建立java對象時,系統老是先調用該類裏定義的初始化塊。
初始化塊沒有名字,也沒有標識,不能經過對象或者類來調用。初始化塊只在建立java對象時隱式執行,並且在執行構造器以前執行。
public class Test{
{
a=6;
}
int a =9;
}
public static void main(String[] args){
System.out.println(new Test().a);//這行代碼輸出爲9;
}
總結:當java建立一個對象時,系統先爲該對象的全部實例屬性分配內存(前提是該類已經被加載過了),接着程序開始對這些實例屬性執行初始化。其初始化順序是:先執行初始化塊或聲明屬性時指定的初始值,而後再執行構造器裏指定的值。