在Java編程中,代碼塊是一段被封裝在一對花括號之間的代碼。Java中有兩種類型的代碼塊: 靜態代碼塊和非靜態代碼塊。靜態代碼塊只在類加載時執行一次,而非靜態代碼塊在每個實例化對象被創建時都會執行一次。
public class Example { static { System.out.println("This is a static block"); } { System.out.println("This is a non-static block"); } }
上面的代碼中,靜態代碼塊使用了關鍵字static
修飾,而非靜態代碼塊則沒有。下面是關于這兩種類型代碼塊的更詳細的解釋:
靜態代碼塊
public class Example { static { System.out.println("This is a static block"); } }
靜態代碼塊在類加載時會執行一次。一般情況下,靜態代碼塊被用來初始化靜態數據成員,因為靜態數據成員是在類加載時分配空間的。例如,下面的代碼給出了一個例子:
public class Example { static int count; static { count = 0; } }
上面的代碼中,靜態變量count
會在類加載時被初始化為0。
非靜態代碼塊
public class Example { { System.out.println("This is a non-static block"); } }
非靜態代碼塊在某個對象實例化時會執行。它們經常被用來初始化實例變量。例如,下面的代碼給出了一個例子:
public class Example { int count; { count = 0; } }
上面的代碼中,實例變量count
會在每次創建對象時被初始化為0。
無論是靜態代碼塊還是非靜態代碼塊,都不能被直接調用。它們只會在它們所屬的類加載或實例化時被執行。