典型回答
final 可以用來修飾類、方法、變量,分别有不同的意義,final 修飾的 class 代表不可以繼承擴充,final 的變量是不可以修改的,而 final 的方法也是不可以重寫的(override)。
finally 則是 Java 保證重點代碼一定要被執行的一種機制。我們可以使用 try-finally 或者 try-catch-finally 來進行類似關閉 JDBC 連接配接、保證 unlock 鎖等動作。
高手回答
-
final
修飾類:不可被繼承
修飾方法:不可重寫
修飾變量:不可修改,隻能限制引用不可以被再次指派。匿名内部類通路局部變量時需要使用 final,因為 Innerclass 實際會 copy 一份局部變量,final 可以防止出現資料一緻性問題
- finally:Java 保證重點代碼一定要被執行的機制,try - finally,除非在 finally 前執行了 System.exit(1)、try 中死循環、線程被殺死
-
finalize:基礎類 Object 的一個方法,保證對象在被垃圾收集前完成特定的資源回收。由于 finalize 執行時間不确定且可能造成程式死鎖、拖慢垃圾收集等問題,Java 9 中将改方法廢棄
優化:使用 Cleaner 配合幻想引用。