Không giống C++, Java hỗ trợ một block đặc biệt gọi là static block được sử dụng để khởi tạo giá trị cho các thuộc tính static của class. Các mã code bên trong static block được thực thi một lần tại thời điểm đầu tiên class được tải và bộ nhớ.
class Test { static int i; int j; static { i = 10; System.out.println("static block called "); } } class Main { public static void main(String args[]) { System.out.println(Test.i); } }
Output:
static block called
10
Ngoài ra, static block được thực thi trước constructor, chúng ta có thể kiểm chứng điều đó thông qua ví dụ sau
class Test { static int i; int j; static { i = 10; System.out.println("static block called "); } Test(){ System.out.println("Constructor called"); } } class Main { public static void main(String args[]) { Test t1 = new Test(); Test t2 = new Test(); } }
Output:
static block called
Constructor called
Constructor called
Nguồn