final、finally与fianalize的区别
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修飾的是一個對象,就表示這個變量被賦予的引用是不可變的 這里需要提醒大家注意的是,不可改變的只是這個變量所保存的引用,并不是這個引用所指向的對象。
第二種情況:final的含義與第一種情況相同。 實際上對于前兩種情況,一種更貼切的表述final的含義的描述,那就是,如果一個變量或方法參數被 final修飾,就表示它只能被賦值一次,但是JAVA虛擬機為變量設定的默認值不記作一次賦值。被 final修飾的變量必須被初始化。
初始化的方式以下幾種:
1.在定義的時候初始化。
2.final變量可以在初始化塊中初始化,不可以在靜態初始化塊中初始化。
3.靜態final變量可以在定義時初始化,也可以在靜態初始化塊中初始化,不可以在初始化塊中初始 化。
4.final變量還可以在類的構造器中初始化,但是靜態final變量不可以。
總結
以上是生活随笔為你收集整理的final、finally与fianalize的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我为什么学习Windows编程
- 下一篇: 初中女生学计算机好还是学医好,女生学医选