java 中static final用法

final用法

1、final用在類上,表明當前類它不能被繼承,沒有子類。
2、final用在方法上,表明當前方法不能被override,不能被重寫。
3、final用在變量上,表明當前變量是一個終態的變量,是一個常量,這個變量的值一但被賦值後就不能被改變了。
(一般final用作全局變量的時候和static連用 即final static)
對於final類型的成員變量的初始化方式:
1、聲明變量時直接賦值
2、在構造方法中完成賦值,如果一個類有多個構造方法,就要保證在每個構造方法中都要完成對該final類型變量的初始化工作。


static用法

有時你希望定義一個類成員,使它的使用完全獨立於該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明爲static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明爲static。static 成員的最常見的例子是main( ) 。因爲在程序開始執行時必須調用main() ,所以它被聲明爲static。

static 修飾變量

  1. 被static修飾的成員變量和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。
  2. 在加載類的時候,static變量在內存中申請,而非在實例類的時候申請內存。類的所有實例共享同一個static變量。
  3. private是訪問權限限定,static表示不要實例化就可以使用。 private static的變量表示該變量不能在其他類中通過類名來直接引用
  4. 靜態變量與實例變量
    • 對於靜態變量在內存中只有一個拷貝(節省內存),JVM只爲靜態分配一次內存,在加載類 的過程中完成靜態變量的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。
    • 對於實例變量,沒創建一個實例,就會爲實例變量分配一次內存,實例變量可以在內存中有多個拷貝,互不影響(靈活)。
  5. 靜態變量的使用場合
    • 在對象之間共享值時
    • 不需要通過實例來訪問變量,方便訪問變量時

static修飾方法

  1. 靜態方法可以直接通過類名調用,任何的實例也都可以調用
  2. 因爲static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract
  3. 靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法(就是不帶static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。
  4. 申明爲靜態方法的是 爲了方便方法的調用,Java API中的Math類中所有的方法都是靜態的,而一般類內部的static方法也是方便其它類對該方法的調用。
發佈了46 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章