Java中的靜態(tài)代碼塊和構(gòu)造函數(shù)都是用來初始化類的,但它們有一些不同的地方。
靜態(tài)代碼塊是在類被加載時(shí)執(zhí)行的,它可以對(duì)靜態(tài)成員變量進(jìn)行賦值或執(zhí)行某些操作。靜態(tài)代碼塊的語法如下:
static { // 靜態(tài)代碼塊的語句 }
例如,下面的代碼演示了如何使用靜態(tài)代碼塊對(duì)靜態(tài)成員變量進(jìn)行初始化:
class MyClass { static int num; static { num = 100; } }
在上面的代碼中,靜態(tài)代碼塊初始化了靜態(tài)成員變量num為100。當(dāng)類被加載時(shí),靜態(tài)代碼塊將被執(zhí)行。
構(gòu)造函數(shù)是在類實(shí)例化時(shí)執(zhí)行的,它可以對(duì)實(shí)例變量進(jìn)行賦值或執(zhí)行某些操作。構(gòu)造函數(shù)的語法如下:
public MyClass() { // 構(gòu)造函數(shù)的語句 }
例如,下面的代碼演示了如何使用構(gòu)造函數(shù)對(duì)實(shí)例變量進(jìn)行初始化:
class MyClass { int num; public MyClass(int n) { num = n; } }
在上面的代碼中,構(gòu)造函數(shù)初始化了實(shí)例變量num為傳遞給它的參數(shù)值。在創(chuàng)建類實(shí)例時(shí),構(gòu)造函數(shù)將被調(diào)用。
總的來說,靜態(tài)代碼塊和構(gòu)造函數(shù)都是用來初始化類的,但靜態(tài)代碼塊適用于對(duì)靜態(tài)成員變量進(jìn)行初始化,而構(gòu)造函數(shù)適用于對(duì)實(shí)例變量進(jìn)行初始化。