1.靜態(tài)代碼塊(Static Block)
靜態(tài)代碼塊在類加載時(shí)執(zhí)行,僅執(zhí)行一次,且在類加載時(shí)執(zhí)行一次。靜態(tài)代碼塊通常用于初始化靜態(tài)成員變量或執(zhí)行一些全局性的初始化操作。如果有多個(gè)靜態(tài)代碼塊,它們的執(zhí)行順序按照它們?cè)陬愔械捻樞驁?zhí)行。
public class MyClass {
static {
// 靜態(tài)代碼塊
}
}
2.代碼塊(Instance Initialization Block)
代碼塊是在對(duì)象實(shí)例化時(shí)執(zhí)行的,每次創(chuàng)建對(duì)象時(shí)都會(huì)執(zhí)行。代碼塊通常用于初始化實(shí)例變量或執(zhí)行一些特定對(duì)象的初始化操作。如果有多個(gè)代碼塊,它們按照它們?cè)陬愔械捻樞驁?zhí)行,然后再執(zhí)行構(gòu)造方法。
public class MyClass {
{
// 代碼塊
}
}
3.構(gòu)造方法(Constructor)
構(gòu)造方法是在對(duì)象實(shí)例化時(shí)執(zhí)行的,用于初始化對(duì)象的狀態(tài)。如果有多個(gè)構(gòu)造方法,根據(jù)你選擇的構(gòu)造方法來(lái)執(zhí)行相應(yīng)的構(gòu)造邏輯。
public class MyClass {
public MyClass() {
// 構(gòu)造方法
}
}
執(zhí)行順序通常是先執(zhí)行靜態(tài)代碼塊,然后執(zhí)行代碼塊,最后執(zhí)行構(gòu)造方法。注意,如果有繼承關(guān)系,子類的構(gòu)造方法在執(zhí)行時(shí)會(huì)調(diào)用父類的構(gòu)造方法,從而可能會(huì)涉及到父類的靜態(tài)代碼塊、代碼塊和構(gòu)造方法的執(zhí)行。
示例:
public class MyClass {
static {
// 靜態(tài)代碼塊
}
{
// 代碼塊
}
public MyClass() {
// 構(gòu)造方法
}
}
Demo
public class Example {
static {
System.out.println("Static Block");
}
{
System.out.println("Instance Initialization Block");
}
public Example() {
System.out.println("Constructor");
}
public static void main(String[] args) {
System.out.println("Creating object 1:");
Example obj1 = new Example();
System.out.println("\nCreating object 2:");
Example obj2 = new Example();
}
}
當(dāng)運(yùn)行上面的代碼時(shí),輸出將如下所示:
Static Block
Creating object 1:
Instance Initialization Block
Constructor
Creating object 2:
Instance Initialization Block
Constructor
總結(jié)
靜態(tài)代碼塊在類加載時(shí)執(zhí)行一次,代碼塊在對(duì)象實(shí)例化時(shí)執(zhí)行,構(gòu)造方法也在對(duì)象實(shí)例化時(shí)執(zhí)行。這個(gè)順序?qū)τ诿總€(gè)對(duì)象的創(chuàng)建都是一樣的。
1.Static Block(靜態(tài)代碼塊):在類加載時(shí)執(zhí)行,僅執(zhí)行一次。在這個(gè)例子中,它在第一次創(chuàng)建對(duì)象之前執(zhí)行.
2.Instance Initialization Block(代碼塊):在對(duì)象實(shí)例化時(shí)執(zhí)行,每次創(chuàng)建對(duì)象時(shí)都會(huì)執(zhí)行。在這個(gè)例子中,它在構(gòu)造方法之前執(zhí)行,因此會(huì)在構(gòu)造方法之前打印出相應(yīng)的信息。
3.Constructor(構(gòu)造方法):在對(duì)象實(shí)例化時(shí)執(zhí)行,用于初始化對(duì)象的狀態(tài)。在這個(gè)例子中,構(gòu)造方法在代碼塊之后執(zhí)行。