在Java中,初始化列表指的是在對(duì)象創(chuàng)建時(shí)為實(shí)例變量或靜態(tài)變量賦初始值的代碼塊。初始化列表可以分為實(shí)例初始化塊和靜態(tài)初始化塊兩種類型。
1. 實(shí)例初始化塊:
實(shí)例初始化塊用于為實(shí)例變量賦初值,并在每次創(chuàng)建對(duì)象時(shí)執(zhí)行。它由花括號(hào) `{}` 包圍,并位于類中的實(shí)例變量定義之間。實(shí)例初始化塊沒有參數(shù),使用的是實(shí)例變量的隱式引用 `this`。
示例:
public class MyClass {
private int x;
// 實(shí)例初始化塊
{
x = 10; // 為實(shí)例變量 x 賦值
}
// 構(gòu)造方法
public MyClass() {
// ...
}
}
2. 靜態(tài)初始化塊:
靜態(tài)初始化塊用于為靜態(tài)變量賦初值,并在類加載時(shí)執(zhí)行,僅執(zhí)行一次。它也由花括號(hào) `{}` 包圍,并位于類中的靜態(tài)變量定義之間。
示例:
public class MyClass {
private static int x;
// 靜態(tài)初始化塊
static {
x = 10; // 為靜態(tài)變量 x 賦值
}
// ...
}
初始化列表可以用于執(zhí)行一些額外的初始化操作,例如為變量賦初值、初始化集合或加載配置等。需要注意的是,初始化列表中的代碼會(huì)在構(gòu)造方法之前執(zhí)行,因此可以在初始化列表中使用構(gòu)造方法參數(shù)。
此外,初始化列表也可以用于匿名內(nèi)部類的初始化,用于定義該匿名內(nèi)部類的實(shí)例初始化塊和構(gòu)造方法。
總之,Java的初始化列表提供了一種在對(duì)象創(chuàng)建時(shí)為實(shí)例變量或靜態(tài)變量賦初始值的方式。通過實(shí)例初始化塊和靜態(tài)初始化塊,可以在對(duì)象創(chuàng)建和類加載時(shí)執(zhí)行相應(yīng)的初始化操作。