Java基礎:關鍵字 final

final在Java中是一個保留的關鍵字,可以聲明成員變量、方法、類以及本地變量。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變量再次初始化的話,編譯器會報編譯錯誤。如果打算在構造器、初始化塊中對final類型的成員變量進行初始化,則不要在初始化之前訪問成員變量的值,否則會引發程序報錯。

1.修飾變量  

凡是對成員變量或者局部變量(在方法中的或者代碼塊中的變量稱爲本地變量)聲明爲final的都叫作final變量。final變量經常和static關鍵字一起使用,作爲常量。

final修飾基本數據類型的變量時,必須賦予初始值且不能被改變,修飾引用變量時,該引用變量不能再指向其他對象
當final修飾基本數據類型變量時不賦予初始值以及引用變量指向其他對象時就會報錯
當final修飾基本數據類型變量被改變時,就會報錯

2.修飾方法

final也可以聲明方法。方法前面加上final關鍵字,代表這個方法不可以被子類的方法重寫。如果你認爲一個方法的功能已經足夠完整了,子類中不需要改變的話,你可以聲明此方法爲final。final方法比非final方法要快,因爲在編譯的時候已經靜態綁定了,不需要在運行時再動態綁定。

3.修飾類

使用final來修飾的類叫作final類。final類通常功能是完整的,它們不能被繼承。Java中有許多類是final的,譬如String, Interger以及其他包裝類。

特徵:凡是引用final關鍵字的地方皆不可修改!

(1)修飾類:表示該類不能被繼承;
(2)修飾方法:表示方法不能被重寫;
(3)修飾變量:表示變量只能一次賦值以後值不能被修改(常量)


final也存在局部變量的情況
系統不會對局部變量進行初始化,局部變量必須由程序員顯式的進行初始化,因此使用final修飾局部變量的時候,既可以在定義是設定默認值,也可以不指定默認值。如果在定義是沒有進行設定默認值,則可以在後面的代碼中對該final變量賦初值,但只能一次,不可以重複賦值。當然如果在定義變量的時候就已經指定默認值,在後面的代碼中就沒有必要也不允許對該變量在進行賦值操作。


final修飾基本類型變量和引用類型的變量的區別
final修飾基本類型變量上面已經講述的很清楚了,那引用類型的變量會有什麼不同呢?對於引用類型的變量而言,它僅僅是保存了一個引用關係,final只保證這個引用類型變量所引用的地址不會改變,即一直引用同一個對象,但這個對象完全可以發生改變。
 

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