在Java中,关键字“final”,“finally”和“finalize”实现了什么目的?[已关闭]最后最后完成

2022-08-31 12:03:48

在Java中,关键字和实现的目的是什么?finalfinallyfinalize


答案 1

最后

final可用于将变量标记为“不可更改”

private final String name = "foo";  //the reference name can never change

final还可以使方法不“可重写”

public final String toString() {  return "NULL"; }

final还可以使类不“可继承”。即该类不能被子类化。

public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed

最后

finally在 try/catch 语句中用于“始终”执行代码

lock.lock();
try {
  //do stuff
} catch (SomeException se) {
  //handle se
} finally {
  lock.unlock(); //always executed, even if Exception or Error or se
}

Java 7 有一个新的 try with resources 语句,可用于自动关闭显式或隐式实现 java.io.Closeablejava.lang.AutoCloseable 的资源

完成

finalize在对对象进行垃圾回收时调用。您很少需要覆盖它。例如:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}

答案 2
  • “最终”表示某些内容无法更改。您通常希望将其用于静态变量,这些变量将在程序的整个生命周期中保持相同的值。
  • “最后”与 try/catch 块结合使用。“finally”子句中的任何内容都将被执行,而不管'try'块中的代码是否引发异常。
  • “Finalize”由 JVM 在对象即将被垃圾回收之前调用。

推荐