Một biến tĩnh được tạo tại thời điểm tải lớp ngay cả trước khi thực thi khối tĩnh và mục đích của khối tĩnh là gán giá trị cho các biến tĩnh. Một biến tĩnh lưu trữ một giá trị được chia sẻ giữa tất cả các trường hợp của lớp mà nó được định nghĩa và khối tĩnh là một phần mã được thực thi khi lớp được tải lần đầu tiên. Nếu chúng ta muốn bất kỳ logic nào cần được thực thi tại thời điểm tải lớp thì logic đó cần phải đặt bên trong khối tĩnh để nó sẽ được thực thi tại thời điểm tải lớp.
JVM thực hiện theo các bước dưới đây để đọc các thành viên tĩnh trong một lớp ::
- Nhận dạng các thành viên tĩnh từ trên xuống dưới
- Thực hiện gán các biến tĩnh và các khối tĩnh từ trên xuống dưới.
- Thực thi phương thức chính.
Ví dụ
public class StaticFlow { static int firstNumber = 10; static { firstMethod(); System.out.println("first static block"); } public static void main(String[] args) { firstMethod(); System.out.println("main method executed"); } public static void firstMethod() { System.out.println(secondNumber); } static { System.out.println("second static block"); } static int secondNumber = 20; }
Đầu ra
0 first static block second static block 20 main method executed