1. 程式人生 > >Java中final、finally 和 finalize 的區別

Java中final、finally 和 finalize 的區別

1.final:Java中的修飾符、關鍵字

final是java中的修飾符,用於修飾屬性(變數)、方法、類。代表屬性值不可修改、方法不可覆蓋、類不可繼承。

當變數被宣告final時,必須要給定初值,而在以後的引用中只能讀取,不能修改。

例項:


上圖我們定義了final 字串,當我們修改這個字串變數時,程式碼會編譯報錯。

當方法被宣告final時,改方法只能使用,不能過載重寫。

例項:


當類被final宣告時,意味著改類不能被繼承。所以,一個類本能被同時宣告abstract抽象類和final類。

例項:


2.finally

finally是java異常處理機制的一部分。不管異常有沒有發生,處在finally裡面的程式碼都會執行。使用finally可以維護物件的內部轉態,並且可以清理非記憶體資源。特別在使用java資源的情況下,如IO流,如果把close()方法都放在finally裡面,就會大大減少程式資源的開銷。

try {
	//異常捕獲
} catch (Exception e) {
	//處理異常
}finally{
	//必須執行的程式碼,如close方法等
}

3.finalize

finalize是java中的一個方法名。當垃圾回收器確定不存在對該物件的更多引用時,由物件的垃圾回收器呼叫此方法。finalize 的主要目的是在不可撤消地丟棄物件之前執行清除操作。例如,表示輸入/輸出連線的物件的 finalize 方法可執行顯式 I/O 事務,以便在永久丟棄物件之前中斷連線。對給定的任何物件,java虛擬機器最多隻呼叫一次finalize()方法。