Java static keyword

來源:互聯網
上載者:User

標籤:成員   不可   記憶體管理   是的   嵌套類   his   時間   lock   block   

Java中static關鍵字主要用於記憶體管理(是的,你沒聽錯)。我們可以將它應用到變數、方法、代碼塊、嵌套類以及匯入包中。靜態關鍵字屬於類,而不是類的執行個體。

1.靜態變數
  1. 靜態變數可以被視為所有對象通用的屬性,例如員工的公司名,學生的學校名
  2. 靜態變數只在類載入時在方法區(class area)中擷取記憶體
  優點:節省記憶體2.靜態方法
  1. 靜態方法屬於類而不是類的對象
  2. 靜態方法可以被調用在沒有類的執行個體的情況下,言外之意,靜態方法可以通過類調用,自然也可以通過類對象調用
  3. 靜態方法可以訪問待用資料成員並更改他們的值
  限制:主要有兩個限制
  1. 靜態方法不能使用非待用資料成員或直接調用非靜態方法
  2. 在靜態上下文中不能使用this或super關鍵字,因為他們就沒有隱式接受this參數
  Q&A:為什麼Java的main方法是靜態?

    因為調用一個靜態方法不需要一個對象。如果main方法是一個非靜態方法,那JVM需要先建立一個對象然後才調用main方法,這將導致額外的記憶體配置

3.靜態代碼塊
  1. 靜態代碼塊被用於初始化待用資料成員
  2. 靜態代碼塊在載入main方法之前被執行,可以對比instance initalizer block的執行時間
  Q&A:我們能執行一個沒有main方法的程式嗎?

  不行。在JDK1.6以前唯一的方式是使用靜態代碼塊,但是自從JDK1.7,他不可能被執行在沒有main方法的時候

4.靜態內部類
  1. 靜態內部類可以使用外部類的待用資料成員和方法,但不能使用非待用資料成員和方法。不同於非靜態內部類,可以使用外部類的所有資料成員和方法
  2. 靜態內部類常用於build模式
5.靜態導包
  1. 可以少寫包的首碼,讓代碼更優美
  2. 不建議使用

 

Java static keyword

聯繫我們

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