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();
沒有留言:
張貼留言