靜態代碼塊

來源:互聯網
上載者:User

標籤:java基礎

成員變數和局部變數的區別?

 成員變數:

    1.成員變數定義在類中,在整個類中都可以被訪問.

    2.成員變數隨著對象的建立而建立,存在於對象所在的堆記憶體中.

    3.成員變數有預設初始化值.

局部變數:

    1.局部變數中能定義在局部範圍內,如:函數內,語句內等.

    2.局部變數存在於棧記憶體中

    3.作用的範圍結束,變數空間會自動釋放.

    4.局部變數沒有預設初始化值

建構函式為什麼沒有傳回值?

    建構函式中不能返回其他東西,只能返回剛剛建立的對象,所以它的行為已經固定了.

代碼塊:

    1.局部代碼塊

        在函數內部定義{},

        不能使用static修飾

    2.構造代碼塊(本身意義為建構函式的補充)

        也是類的成員,和成員變數和成員函數同級.

        構造對象時,先調用構造代碼塊,然後是建構函式.

    3.靜態代碼塊

        構造代碼塊 + static修飾符---> 靜態代碼塊

        靜態代碼塊在類載入的時候執行,而且只執行一次

        靜態代碼塊的執行時間時間是類被載入的時候

        Class.forName(String,boolean,initialize,ClassLoader) 第二個參數可以控制載入時是否調用靜態代碼塊,預設是false


    注意:靜態代碼塊是類載入的時候執行的,而不是建立對象的時候執行,一個類被載入到一個叫"方法區"的地方,這個地方對於類資訊進行永久儲存

    當虛擬機器運行後會建立一個運行時區 這個區內包括分配的堆棧空間和方法區 , 方法區放置類的資訊 每建立一個線程就會建立一個新的棧地區 ,棧區負責存放類的方法 ,每運行一個方法就會將方法壓入棧頂部 當方法執行完 將其彈出. 一個運行時區至少需要有一個棧用來儲存main方法,這也說明一個程式最少也需要存在一個線程來執行main方法.













靜態代碼塊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.