久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

Java中final,finally,finalize三個關鍵字的區別

來源:技術員聯盟┆發布時間:2017-06-24 18:30┆點擊:

  當這個關鍵字修飾一個類時,意味著他不能派生出新的子類,也就是說不能被繼承,因此一個類不能被同時聲明為abstract和final。當final修飾變量或者方法時,可以保證他們在使用中不會被改變。被聲明為final的變量必須在初始化時給定初值,以后在使用時只能被引用而不能被修改。同樣,當final修飾一個方法時,這個方法不能被重載。

  finally

  異常處理時提供finally來執行任何清楚操作。如果拋出一個異常,那么相匹配的catch子句就會被執行,然后控制就會轉入finally塊。

  finalize

  方法名。finalize方法在垃圾回收器執行內存對象清理時會調用finalize()方法進行前期的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

  Java中所有類都從Object類中繼承finalize()方法。當垃圾回收器(garbage colector)決定回收某對象時,就會運行該對象的finalize()方法。值得C++程序員注意的是,finalize()方法并不能等同與析構函數。Java中是沒有析構函數的。C++的析構函數是在對象消亡時運行的。由于C++沒有垃圾回收,對象空間手動回收,所以一旦對象用不到時,程序員就應當把它delete()掉。所以析構函數中經常做一些文件保存之類的收尾工作。但是在Java中很不幸,如果內存總是充足的,那么垃圾回收可能永遠不會進行,也就是說filalize()可能永遠不被執行,顯然指望它做收尾工作是靠不住的。

  那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申請的內存。Java程序有垃圾回收器,所以一般情況下內存問題不用程序員操心。但有一種JNI(Java Native Interface)調用non-Java程序(C或C++),finalize()的工作就是回收這部分的內存。