靜態代碼塊執行時機


靜態變量在准備階段賦默認零值,在初始化階段賦用戶值,靜態代碼塊在初始化階段執行

 

本質上,static int a = 2 

是要分成兩步

  static int a;

  static {a = 2}

也就是說,

准備階段,靜態變量賦予零值

初始化階段,靜態代碼塊執行(包括對靜態變量的賦值)

public class StaticBlockDemo {

    static int a = 2;
    
    static {
        // 如果在准備階段,則a = 0;
        // 如果在初始化階段, a = 2;
        System.out.println(a);
    }
    
    public static void main(String[] args) {
        
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM