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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

final, finally, finalize 的区别

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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區段中的返回值--這常常又與程序編寫的初衷相背。

總結

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

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