1. 程式人生 > >[CareerCup] 14.3 Final Finally Finalize 關鍵字比較

[CareerCup] 14.3 Final Finally Finalize 關鍵字比較

14.3 What is the difference between final, finally, and finalize?

這道題考察我們Java中的三個看起來很相似的關鍵字final,finally和finalize。

別看它們三長的很像,但是完全不是一回事。final用在一個變數,方法或是類之前表示是否可變化。而finally是用在try/catch模組中來卻表一段程式碼總是被執行了。finalize方法是被垃圾管理器呼叫當沒有引用存在了。下面來更進一步區分它們:

final

作用於主要型別的變數:變數值不能改變

作用於引用型別的變數:引用變數不能指向堆中其他的物件

作用於一個方法:方法不能被重寫

作用於一個類:該類不能有子類

finally

finally塊可以為try或catch之後,裡面的程式碼總會被執行(除了虛擬機器或者執行緒在try/catch中就結束)

finalize()

finalize()方法被垃圾回收機制呼叫,當沒有引用存在時。經常備用於清理資源,比如關閉一個檔案。