靜態變量、代碼塊、和靜態方法的執行順序


我們來看一段代碼,下面的代碼一目了然

class A{
    static int i=0;
    static {
        System.out.println("靜態代碼塊A");
    }
    public A(){
        System.out.println("構造方法A");
    }

    {
        System.out.println("代碼塊A");
    }

    static {
        i++;
        System.out.println("在類A中靜態變量i="+i);
    }
}
public class B extends A{


    static {
        System.out.println("靜態代碼塊B");
    }
    public B(){
        System.out.println("構造方法B");
    }
    {
        System.out.println("代碼塊B");
    }
    public static void main(String[] args) {
        System.out.println("main方法");
        new B();
        System.out.println("--------------------");
        new B();
    }

    static {
        i++;
        System.out.println("在類B中靜態變量i="+i);
    }

}

  執行結果

我們可以得出以下結論

  • 靜態變量是全局變量
  • 靜態方法在類加載時被執行,只會被執行一次
  • 靜態變量和靜態方法按照聲明的順序依次執行
  • 父類的靜態方法>子類的靜態方法>Main函數>父類的代碼塊>父類的構造方法>子類的代碼塊>子類的構造方法

 


免責聲明!

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



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