在Java中,初始化塊和構(gòu)造器都是用來初始化類的成員變量的。
初始化塊是一個代碼塊,它在類中定義,沒有參數(shù),沒有返回值,只要實例化對象,就會執(zhí)行該塊中的代碼。初始化塊的作用是在構(gòu)造器調(diào)用前對成員變量進行初始化。一個類可以有多個初始化塊,在創(chuàng)建對象的時候,會按照初始化塊定義的順序先后執(zhí)行。
public class Example { int x; { System.out.println("這是初始化塊"); x = 5; } public Example() { System.out.println("這是構(gòu)造器"); } }
在上面的例子中,先執(zhí)行初始化塊,再執(zhí)行構(gòu)造器。如果創(chuàng)建多個實例,每個實例都會執(zhí)行初始化塊中的代碼。
構(gòu)造器是類中特定的方法,當創(chuàng)建對象時,系統(tǒng)會自動調(diào)用該方法。構(gòu)造器用來初始化對象,可以接收參數(shù),但是沒有返回值。與初始化塊不同,一個類可以有多個構(gòu)造器,彼此之間可以重載。
public class Example { int x; public Example() { System.out.println("這是無參數(shù)構(gòu)造器"); x = 5; } public Example(int num) { System.out.println("這是有參數(shù)構(gòu)造器,num = " + num); x = num; } }
在上面的例子中,有無參數(shù)的兩個構(gòu)造器。在創(chuàng)建實例的時候可以選擇構(gòu)造器,并根據(jù)參數(shù)列表來選擇哪個構(gòu)造器。如果沒有選擇構(gòu)造器,系統(tǒng)會默認調(diào)用無參構(gòu)造器。