JAVA 基礎重構 四 (final static關鍵字)

關鍵字 final
  final,一如字面意思 “最終的”,大體在 Java 中表示“不可變的”。可用來修飾類、方法、方法參數以及變量。

  1、修飾類

   final 在修飾類的時候,代表的是此類不能被繼承。也就是說如果一個類確定不會被繼承使用,則可以設計成 final類型的。典型的例子就是 String 類。

  2、修飾方法

  final 修飾的方法,能被繼承,但是不能重寫。可以重載。

  3、修飾方法參數

  final 在修飾方法參數的時候,表示的是在執行方法的內部,不能夠去改變參數的值。但是如果是引用對象,是可以改變應用對象的屬性值。

  4、修飾變量

  final 在修飾變量,代表的是不可變,也即是常說的 “常量”。 final 在修飾的時候,允許一次賦值,之後在生命週期類,不允許對其進行修改。

  修飾變量存在兩種情況:基本類型的數據 和  對象數據。在修飾基本類型數據的時候,值是不可變的。在修飾對象數據的是,對象的引用是不可改變的,但是,可以修改對象內部的屬性值。

  final 修飾的變量必須在使用前進行初始化,一種方式是在聲明的時候就給出默認值。還有一種就是通過構造方法去設置。

關鍵字 static
  static,靜態的。在 Java 中,static 通常可被用於修飾 變量、方法以及代碼塊。

  1、修飾變量

  static 修飾的變量,叫做靜態變量。static 變量被所有類對象共享,在內存中僅一份,隨着類的初始化而被加載。與之對應的非靜態變量,是屬於每個實例對象本身,內存中存在多份,相互間不影響。

  2、修飾方法

  static 修飾的方法,叫做靜態方法。調用靜態方法,不依賴於實例對象就可以進行訪問,所以,靜態方法是沒有 this的。由於此特性以及非靜態方法依賴於實例對象調用,所以靜態方法中是不能夠直接使用非靜態的成員屬性和方法。與之相反的是,非靜態方法是可以直接訪問使用靜態成員變量和方法。同樣的,靜態方法也是沒有 super 的。可以一句話總結下:由於 static 和具體的實例對象無關,而 this、super和具體的實例對象息息相關,所以,static 和 this、super 勢如水火,一如白天與黑夜。

  3、修飾代碼塊

  static 修飾代碼塊,在類初始化加載的時候,會按照 static 塊的順序進行加載,並且,生命週期內,只加載一次。基於此特性,可以設計優化程序的性能,一些只需要一次性初始化加載的內容,就可以放在 static 塊中進行。

總結:

final 和 static ,聯合使用修飾屬性表示一旦給值,就不可修改,並且可以通過類名訪問;修飾方法,表示該方法不能重寫,可以在不new對象的情況下調用。突然想到,接口 interface 中,成員變量的默認修飾符爲 public static final,方法的默認修飾符 public abstract

微信公衆號:

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章