【java】靜態代碼塊

來源:互聯網
上載者:User

標籤:java   靜態代碼塊   

靜態代碼塊

  • 格式:

    static

    {

       靜態代碼塊中的執行語句

    }

  • 特點:

    隨著類的載入而執行,只執行一次,用於給類進行初始化,並優先於主函數執行

    考慮如下java語句

class StaticCode{    static    {        System.out.println("a");    }}public class Demo {    static    {        System.out.println("b");    }    public static void main(String[] args)    {        new StaticCode();        new StaticCode();        System.out.println("end");    }    static    {        System.out.println("c");    }  }

輸出結果為:

b

c

a      <==雖然有兩個調用StaticCode的語句,但是因為其中只包含靜態代碼塊,而靜態代碼塊只執行

          一次,所以只輸出一個a

end


只有涉及到類中的內容的時候,類才會載入,靜態代碼塊才會執行

StaticCode m = null;   <==類沒有被載入

s = new StaticCode();  <==類被載入了,因為用到了類中的建構函式StaticCode(),所以靜態代碼塊

                          會被執行

所以判斷一個類有沒有被載入,可以用靜態代碼塊來驗證

class StaticCode{    StaticCode()    {        System.out.println("c");    }    static    {        System.out.println("a");            I    }        {        System.out.println("b");            II    }        StaticCode(int x)    {        System.out.println("hah");          III    }        public static void test()    {        System.out.println("succeed");    }}public class Demo {        public static void main(String[] args)    {        new StaticCode(5);    }      }

I    -----  靜態代碼塊給類進行初始化

II   -----  構造代碼塊給對象進行初始化

III  -----  建構函式給對應對象進行初始化

輸出結果:

a

b

hah


注意:靜態代碼塊只可以訪問靜態變數

      構造代碼塊可以訪問到

【java】靜態代碼塊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.