Java中 static、final 用法小結
來源:程序員人生 發布時間:2015-08-20 08:24:25 閱讀次數:3190次
final
final變量(在將關鍵字final加在定義的變量之前,即表明此變量1旦被初始化便不可改變.)
- 不可改變的具體意思是指:
- 其初始化可以在兩個地方進行(二者只能選其1):
- 變量的定義處(也就是說在final變量定義時直接給其賦值)
- 在構造函數中
- 當函數參數為final類型時,可以讀取使用該參數,但是沒法改變該參數的值.
- 在方法里面定義的內部類若是需要使用方法的參數時,此參數也必須聲明為final才可以使用
final方法(如果1個類不允許其子類覆蓋某個方法,便可把這個方法聲明為 final 方法)
使用final方法的緣由有2:
- 鎖定方法,避免任何繼承類修改它的意義和實現.
- 高效。編譯器在遇到調用 final 方法時候會轉入內嵌機制,大大提高履行效力。
final類(final類不能被繼承)
- 因此final類的成員方法沒有機會被覆蓋,默許都有final來修飾
- 在設計類時,若此類不需要有子類、類的實現細節不允許改變那末就設計為 final類
static
概述
被static修飾的成員變量和成員方法獨立于該類的任何對象.
它隸屬于類本身,而不依賴類特定的實例,被類的所有實例同享
- 也就是說 static表示不需要實例化就能夠使用
- 只要這個類被加載過,JVM就可以根據類名在運行時數據區的方法區內找到.
- static對象可以在它的任何對象創建之前訪問,無需援用任何對象.
- static變量前若有private修飾,即表明不能在其他類中通過類名來直接援用
- static變量可以在類的靜態代碼塊中,或類的成員方法(包括靜態與非靜態)中使用
static變量
依照是不是為靜態的對類成員變量進行分類,可分兩種:
- 靜態變量 在其前面有static修飾(也叫類變量)
實例變量 在其前面沒有static修飾
二者的區分以下:
- 對靜態變量
- 節省內存 在內存中只有1個拷貝,在JVM加載類的進程中完成對靜態變量的內存分配
- 方便 可用類名直接訪問(固然也能夠通過對象來訪問,但此類方式不推薦)
- 對實例變量
- 靈活 在內存中可以有多個拷貝,互不影響
- 每創建1個實例,就會為其分配1次內存.
- static方法
- static方法 以直接通過類名調用,任何的實例也都可以調用
- static方法中 只能訪問所屬類的靜態成員變量和成員方法.
- static方法中 不能用this和super關鍵字
- static方法不能被abstract修飾,由于其獨立于任何實例必須在類里面有方法體
- static代碼塊
- JVM加載類時會履行這些靜態的代碼塊,并且每一個代碼塊只會被履行1次
- 也叫靜態代碼塊,是在類中獨立于類成員的static語句塊.
- 可以有多個,位置可以隨意放,它不在任何的方法體內
- 如果static代碼塊有多個,JVM將依照它們在類中出現的前后順序順次履行它們.
final static 同時出現
static final用來修飾成員變量和成員方法,可簡單理解全局常量
對變量 表示1旦給值就不可修改,并且通過類名可以訪問.
對方法 表示不可覆蓋,并且可以通過類名直接訪問.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈