Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Thứ tự thực thi non-static block so với constructor trong Java

Khi một đối tượng được tạo, non-static block (khối không tĩnh) sẽ được thực thi trước constructor.

Non-Static Blocks (Instance Initialization Blocks)

  • Là khối cấp độ lớp (class-level) không có prototype (không tên, không tham số, không kiểu trả về).
  • Mục đích: thực thi logic bất cứ khi nào đối tượng được tạo, riêng biệt với constructor nào được gọi.
  • JVM tự động gọi cho mỗi lần tạo đối tượng trong java stack area.
  • Có thể tạo bất kỳ số lượng non-static block.
  • Thứ tự thực thi theo thứ tự định nghĩa trong code (từ trên xuống dưới).

Ví dụ minh họa

public class NonStaticBlockTest { 
    { 
        System.out.println("First Non-Static Block"); // first non-static block 
    } 
    { 
        System.out.println("Second Non-Static Block"); // second non-static block 
    } 
    { 
        System.out.println("Third Non-Static Block"); // third non-static block 
    } 
    
    NonStaticBlockTest() { 
        System.out.println("Execution of a Constructor"); // Constructor 
    } 
    
    public static void main(String args[]) { 
        NonStaticBlockTest nsbt1 = new NonStaticBlockTest(); 
        NonStaticBlockTest nsbt2 = new NonStaticBlockTest(); 
    } 
}

Kết quả đầu ra

First Non-Static Block 
Second Non-Static Block 
Third Non-Static Block 
Execution of a Constructor 
First Non-Static Block 
Second Non-Static Block 
Third Non-Static Block 
Execution of a Constructor

Quy trình khởi tạo đối tượng đầy đủ

  1. Static variables & static blocks (lần đầu load class)
  2. Instance variables & non-static blocks (theo thứ tự code)
  3. Constructor (constructor body)

Ứng dụng: Non-static block dùng để khởi tạo chung cho nhiều constructor (tránh trùng code), hoặc logic phức tạp trước khi constructor chạy.