一、Java基礎之static關鍵字

來源:互聯網
上載者:User

標籤:soft   注意   編程思想   線程   參數   操作   img   jvm   資訊   

static關鍵字可以用來修飾變數、方法、代碼塊以及內部類。

靜態資源從JVM的類載入機制角度來說,它是在類首次被初始化時載入到方法區,而非靜態資源需要類new出對象的時候被載入到堆棧裡。如:使用Class.forName(“xxx”)方法初始化某個類來載入靜態資源,同樣的,在new出對象前會確保該類被初始化了。

 

static變數:

靜態變數被所有對象共用,在記憶體中只有一份。故,被任意對象修改該靜態變數後,會影響到所有對象。

(PS:在多線程中需要多注意共用資源的使用。)

 

static方法:

《Java編程思想》中說靜態方法是沒有this的方法。而非靜態方法和變數都需要通過對象來訪問(this),所以靜態方法內部只能引用靜態變數。非靜態方法內部可以引用非靜態變數、靜態方法和靜態變數。

靜態方法和靜態變數可以直接通過類名訪問,即通過類名就可以在方法區尋找到該類資訊。

(PS:通過javap –verbose xxx.class  查看為什麼靜態方法沒有this。預設非靜態方法參數列表會自動加上this參數。this表示當前對象,故this可以訪問所有靜態非靜態方法和變數)

 

static代碼塊:

靜態代碼塊與靜態變數一樣,若且唯若類首次初始化時執行。靜態資源的載入順序是按照定義順序載入的。

注意:靜態代碼塊對於定義在它之後的靜態變數,可以賦值,但是不能訪問

  static內部類:

靜態內部類請參考後續內部類文章

 

static匯入:

靜態匯入:必須寫成import static,不能寫成static import

好處:簡化一些操作,增強可讀性,不需要寫對應類名即可使用靜態方法

 

 

 

參考資料:

http://www.cnblogs.com/xrq730/p/4820992.html

http://www.cnblogs.com/dolphin0520/p/3799052.html

http://lavasoft.blog.51cto.com/62575/18771/

==================================================================
這是我在閱讀他人部落格,自我學習並歸納總結後寫下的博文,我能保證這裡的每一句話都是我經過認真推敲斟酌後寫下的,同時也歡迎大家指出有問題的地方。我希望能站在巨人的肩膀上將知識分享給大家。

”如果我看得比別人更遠些,那是因為我站在巨人的肩膀上” ——  牛頓
==================================================================

一、Java基礎之static關鍵字

聯繫我們

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