static與final區別


1. final 

 
final類不能被繼承,沒有子類,final類中的方法默認是final的
final方法不能被子類的方法復蓋,但可以被繼承
final成員變量表示常量,只能被賦值一次,賦值后不能再被改變
final不能用於修飾構造方法
private不能被子類方法覆蓋,private類型的方法默認是final類型的
 
 
final修飾的變量有三種:靜態變量、實例變量和局部變量,分別表示三種類型的常量。
注意:final變量定義的時候,可以先聲明,而不給初值,這中變量也稱為final空白,無論什么情況,編譯器都確保空白final在使用之前必須被初始化。
 
 
2. static
 
static表示“全局”或者“靜態”的意思,用來修飾成員變量和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變量的概念。
 
被static修飾的成員變量和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。只要這個類被加載,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。因此,static對象可以在它的任何對象創建之前訪問,無需引用任何對象。
 
用public修飾的static成員變量和成員方法本質是全局變量和全局方法,當聲明它類的對象市,不生成static變量的副本,而是類的所有實例共享同一個static變量。
 
- 類成員變量
  - 靜態變量(類變量): static修飾
  - 實例變量      : 無static修飾
- 局部變量
 
 
3. static和final一起使用
 
static final用來修飾成員變量和成員方法,可以理解為“全局變量”
 
對於變量,表示一旦給值就不可修改,並且通過類名可以訪問。
對於方法,表示不可覆蓋,並且可以通過類名直接訪問。
 
注意:
對於被static和final修飾過的實例常量,實例本身不能再改變了,但對於一些容器類型(比如,ArrayList、HashMap)的實例變量,不可以改變容器變量本身,但可以修改容器中存放的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM