final、finally、finalize的區別

在Java學習中遇到了三個關鍵字,final、finally、finalize,下面我來介紹一下它們的區別。

final

用於修飾類、成員變量和成員方法。final修飾的類,不能被繼承(String、StrngBuilder、StringBuffer、Math,不可變類),其中所有的方法都不能被重寫,所有不能同時用abstract和final修飾(abstract修飾的是抽象類,抽象類是用於被子類繼承的,和final起相反的作用);final修飾的方法不能被重寫,但是子類可以用父類中final修飾的方法;final修飾的成員變量是不可變的,如果成員變量是基本數據類型,初始化之後成員變量的值不能被改變,如果成員變量是引用類型,那麼它只能指向初始化時指向的那個對象,不能再指向別的對象,但是對象中的內容是允許改變的。

finally

finally是在異常處理時提供finally塊來執行任何清除操作。不管有沒有異常被拋出、捕獲都會被執行。try塊中的內容是在無異常時執行到結束。catch塊中的內容,是在try塊內容發生catch所聲明的異常時,跳轉到catch塊中執行。finally塊則是無論異常是否發生都會執行finally塊的內容,所以在代碼邏輯中有需要無論發生什麼都必須執行的代碼,可以放在finally塊中。

finalize

finalize是方法名,java技術允許使用finalize()方法在垃圾收集器將對象從內存中清楚出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的,它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統資源或者執行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的。

try…catch…finally結構的語法格式

Try

{

  可能會出現異常的代碼段

}

Catch(異常類名 處理該異常對象)

{

  異常處理代碼段

}

Finally

{

總是需要執行的代碼段

}


以上便是我根據網上資料加上個人見解所總結得出來的,歡迎大家批評指正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章