1. 程式人生 > >Java static keyword

Java static keyword

我們 word 靜態代碼塊 super關鍵字 導入 ati key 靜態數據成員 執行

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