国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Java里final finally finalize區別

Java里final finally finalize區別

來源:千鋒教育
發布人:qyf
時間: 2022-06-07 11:37:00 1654573020

tongyong11

  final finally finalize 區別及用法:

  1,final修飾的class,代表不可以繼承擴展。

  2、final的方法也是不可以重寫的。

  3、final修飾的變量是不可以修改的。這里所謂的不可修改對于基本類型來來,的確是不可以修改。而對于引用類型來說,只能說不能重新賦值。也就是不能改變引用地址。但是作為引用類型,它內部所包含的內容如果不是final則可以隨意修改

  Finally : 提到finally,那么try-catch就逃不掉了。finally 則是Java保證重點代碼一定要被執行的一種機制。最常用的地方:通過try-catch-finally來進行類似資源釋放、保證解鎖等動作

  Finalize: 設計之初的作用就是:在CG要回收某個對象時,讓這個對象有底氣的大喊一聲:“報告,我還能再搶救一下!”。但是也正是因為如此,JVM要對它進行額外處理。finalize也就成為了CG回收的阻礙者,也就會導致這個對象經過多個垃圾收集周期才能被回收。

  區別

  一、性質不同

  (1)final為關鍵字; (2)finalize()為方法; (3)finally為為區塊標志,用于try語句中;

  二、作用

  (1)final為用于標識常量的關鍵字,final標識的關鍵字存儲在常量池中(在這里final常量的具體用法將在下面進行介紹);

  (2)finalize()方法在Object中進行了定義,用于在對象“消失”時,由JVM進行調用用于對對象進行垃圾回收,類似于C++中的析構函數;用戶自定義時,用于釋放對象占用的資源(比如進行I/0操作);

  (3)finally{}用于標識代碼塊,與try{}進行配合,不論try中的代碼執行完或沒有執行完(這里指有異常),該代碼塊之中的程序必定會進行

  1.簡單區別:

  final用于聲明屬性,方法和類,分別表示屬性不可交變,方法不可覆蓋,類不可繼承。

  finally是異常處理語句結構的一部分,表示總是執行。

  finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,供垃圾收集時的其他資源回收,例如關閉文件等。

  2.中等區別:

  雖然這個單詞在Java中都存在,但是并沒太多關聯:

  final:java中的關鍵字,修飾符。

  A).如果一個類被聲明為final,就意味著它不能再派生出新的子類,不能作為父類被繼承。因此,一個類不能同時被聲明為abstract抽象類的和final的類。

  B).如果將變量或者方法聲明為final,可以保證它們在使用中不被改變.

  1)被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。

  2)被聲明final的方法只能使用,不能重載。

  finally:java的一種異常處理機制。

  finally是對Java異常處理模型的最佳補充。finally結構使代碼總會執行,而不管無異常發生。使用finally可以維護對象的內部狀態,并可以清理非內存資源。特別是在關閉數據庫連接這方面,如果程序員把數據庫連接的close()方法放到finally中,就會大大降低程序出錯的幾率。

  finalize:Java中的一個方法名。

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

  3.詳細區別:

  這是一道再經典不過的面試題了,我們在各個公司的面試題中幾乎都能看到它的身影。final、finally和finalize雖然長得像孿生兄弟一樣,但是它們的含義和用法卻是大相徑庭。

  final關鍵字我們首先來說說final。它可以用于以下四個地方:

  1).定義變量,包括靜態的和非靜態的。

  2).定義方法的參數。

  3).定義方法。

  4).定義類。

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

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

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

  更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助理你實現java程序員夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT