日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

final,finally和finalize的区别

發布時間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 final,finally和finalize的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

final,finally和finalize的區別

一.總體區別

final ? ? ? 用于申明屬性,方法和類,表示屬性不可變,方法不可以被覆蓋,類不可以被繼承。
finally ? ? 是異常處理語句結構中,表示總是執行的部分。  
finallize ? 表示是object類一個方法,在垃圾回收機制中執行的時候會被調用被回收對象的方法。允許回收此前未回收的內存垃圾。所有object都繼承了 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? finalize()方法

二.final詳解

Java中final也用來修飾3類東西:變量,方法和類。
1.變量
final修飾變量表示該變量是不可變的。例如 final int i =1;在程序中i的值就不允許改變了。比較容易混淆的是final用來修飾引用變量時,表示該引用變量是不可變的即引用變量指向的內存地址是不變的,但是被指的內存地址中的類是可以改變的。例如:
final MyClass myClass = new MyClass();
這樣聲明myClass后,其所指向的內存地址就固定了,但仍然可以改變myClass所引用對象的成員變量。如果試圖重用myClass這個變量,讓其引用另一個對象則會出錯。
myClass = new MyClass();//error!!!
2.方法
final修飾方法時表示該方法是不能被子類重寫的。
3.類

final修飾類時表示該類是不能被繼承的,由于java的單繼承關系,所以該類是繼承關系鏈中的終端。

關于final的幾個注意事項:

a、final變量必須在聲明的時候初始化或是在構造函數中初始化;
b、接口中聲明的所有變量都是final的;
c、final,finally,finalize的區別。final表示不可變,final表示必須執行的語句,finalize表示垃圾回收時執行的代碼。

三.finally 詳解

? ? ? ?Java異常處理模型與其他語言相比,關鍵詞finally是最出色的新增特性了。finally構件使得該區段中的代碼總是得以執行,而無論是否發生異常,特別適用于維護對象的內部狀態(用來保證異常發生恢復對象的有效狀態,以確保程序能在處理完異常后自動再次投入運行)和清理non-memory資源(垃圾回收機制無法處理的資源,如數據庫連接、Socket等等)。?

? ? ? 但有一點值得注意,那就是盡量不要從try區段中返回(調用return),因為只要有finally區段存在,它就一定會被執行,那么如果你在finally區段中又調用了一次return語句,則try區段中的返回值將會被遮掩,使得方法調用者得到的是finally區段中的返回值--這常常又與程序編寫的初衷相背。


from: http://blog.csdn.net/sheepmu/article/details/38326783

總結

以上是生活随笔為你收集整理的final,finally和finalize的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。