在Java中,構(gòu)造代碼塊和構(gòu)造方法是用來初始化對象的兩種方式。本文將介紹這兩種方法的使用和區(qū)別。
首先是構(gòu)造代碼塊。它是在類中直接定義的代碼塊,不需要任何修飾符。當創(chuàng)建對象的時候,構(gòu)造代碼塊會在構(gòu)造方法之前被執(zhí)行。例如:
public class Example { { System.out.println("構(gòu)造代碼塊被執(zhí)行!"); } public Example() { System.out.println("構(gòu)造方法被執(zhí)行!"); } }
當我們創(chuàng)建Example對象的時候:
Example obj = new Example();
會輸出如下結(jié)果:
構(gòu)造代碼塊被執(zhí)行! 構(gòu)造方法被執(zhí)行!
接下來是構(gòu)造方法。它是類中用來創(chuàng)建對象的特殊方法,與類名稱相同,沒有返回類型且可帶參數(shù)。與構(gòu)造代碼塊不同,構(gòu)造方法可以由public、protected、private修飾。例如:
public class Example { public Example(){ System.out.println("無參構(gòu)造方法被執(zhí)行!"); } public Example(String msg){ System.out.println("有參構(gòu)造方法被執(zhí)行,參數(shù)為:" + msg); } }
當我們創(chuàng)建Example對象的時候:
Example obj1 = new Example(); Example obj2 = new Example("Hello World!");
會輸出如下結(jié)果:
無參構(gòu)造方法被執(zhí)行! 有參構(gòu)造方法被執(zhí)行,參數(shù)為:Hello World!
可以看出,構(gòu)造代碼塊在每次創(chuàng)建對象的時候都會執(zhí)行,而構(gòu)造方法則是根據(jù)參數(shù)的不同執(zhí)行不同的初始化操作。同時,在創(chuàng)建對象時,構(gòu)造代碼塊會先于構(gòu)造方法執(zhí)行。