java基礎(chǔ)-final

final是java的一個關(guān)鍵字,他可以用于修飾類,方法,變量。此關(guān)鍵字的作用在于表明它所修飾的內(nèi)容是不可改變的。

1 修飾變量

final顧名思義是最終的意思,他修飾變量意味著這個變量的值不能再更改。一個即是static又是final的常量會占據(jù)一段不能改變的內(nèi)存空間。對于這樣的常量,我們的命名規(guī)范是約定俗成的大寫字母加下劃線,如下:

private static final int TEST_FINAL = 1;

在修飾引用變量的時候,這個值是指的其引用不變,但引用的對象的內(nèi)容是可變的。而在修飾基本變量如int時,則意味著這個基本類型的值不能改變。值得注意的是,final在修飾String類的對象時,其值和修飾基本變量類型是一樣不能改變的。答案可以在這篇博客中找到:[Java] String類深度解析。這里不再展開。

2 修飾方法

final修飾的一個方法代表這個方法可以被繼承,但是不可以被子類重寫。一般對一個方法加上final關(guān)鍵字作為修飾,代表這個方法你認為不需要再重寫和修改,而是想要確保在繼承中方法的行為保持不變。

在過去,建議使用final 方法的另一個原因在于效率,final方法是在程序編譯的時候就靜態(tài)綁定了,但是在如今的jvm中這個速度已經(jīng)可以忽略不計了。并且,也不再建議出于效率目的使用final。

此外,一個類中所有的private方法都是隱式的被指定為final 的。因此對private方法添加final關(guān)鍵字沒有任何意義。private方法不能被取用,因此也無法覆蓋。

3 修飾類

final類不能被繼承,其修飾的類功能通常是完整的。

與finally區(qū)別?finally 通常用在異常處理中。異常處理可以參考這篇文章:java異常機制詳解。

與finalize區(qū)別?finalize是在Object類中定義的方法,是在垃圾回收時虛擬機調(diào)用來終結(jié)對象的方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容