final
, finally
, finalize
的區別也是常考題,因為名稱很像所以常會搞混。
final
和finally
是Java關鍵字,finalize()
則是方法。
final
是類別、變數、方法修飾子。加上final
修飾的類別無法被繼承、變數無法被修改、方法無法被覆寫。final class UnextendableClass { final String value; final String getValue() { return this.value; } }
finally
是例外處理try catch一定會被執行的區塊。try { // 正常邏輯 } catch (Throwable e) { // 例外處理 } finally { // 此區塊一定會執行 }
finalize()
是Object
的方法,當物件沒參照時GC會呼叫此方法。由於JVM回收物件的時機無法掌握,所以finalize()
被執行的時機也就不一定。new Object().finalize();
沒有留言:
張貼留言