網頁

2018/2/24

Java final, finally, finalize的區別

final, finally, finalize的區別也是常考題,因為名稱很像所以常會搞混。

finalfinally是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();
    

沒有留言:

張貼留言