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程序員夢想。