Java中final、finally、finalize的區別

codeFei發表於2018-05-31

這三者的出鏡率還挺高的,就簡單記錄下,以後會再寫詳細的總結和分析下每個具體的的用法和知識點

1、final修飾符(關鍵字)可用於修飾類、變數和方法,用於表示它修飾的類、方法和變數不可改變。

final 修飾變數時,表示該變數一旦獲取了初始值就不可被改變,final既可以修飾成員變數(包括類變數和例項變數),也可以修飾區域性變數、形參。final修飾的變數不可被改變,一旦獲取了初始值,該final變數的值就不能被重新賦值。將變數或方法宣告為final,可以保證他們在使用的過程中不被修改。被final修飾的類,就意味著不能再派生出新的子類,不能作為父類而被子類繼承。因此一個類不能既被abstract宣告,又被final宣告。

2、finally(關鍵字)是在異常處理時,try-catch-finally語句中使用,finally快常用來處理一些後續的工作

在執行過程中,只要存在finally塊,最終都會被執行。try塊中的內容是在無異常時執行到結束。catch塊中的內容,是在try塊內容發生catch所宣告的異常時,跳轉到catch塊中執行;finally塊則是無論異常是否發生,都會執行finally塊的內容,所以在程式碼邏輯中有需要無論發生什麼都必須執行的程式碼,就可以放在finally塊中。

3、finalize 是Java中的一個方法名。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。

Java 技術允許使用 finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。Java中所有類都從Object類中繼承finalize()方法。 當垃圾回收器(garbage colector)決定回收某物件時,就會執行該物件的finalize()方法。那麼finalize()究竟是做什麼的呢?它最主要的用途是回收特殊渠道申請的記憶體。Java程式有垃圾回收器,所以一般情況下記憶體問題不用程式設計師操心。但有一種JNI(Java Native Interface)呼叫non-Java程式(C或C++),finalize()的工作就是回收這部分的記憶體

相關文章