final、finally、finalize 的区别?

  • final 用于修饰变量、方法和类:被 final 修饰的类不可被继承,被 final 修饰的方法不可被重写,被 final 修饰的变量是不可变的。
  • finally 是异常处理的一部分,它必须与 try-catch 块一起使用,并包含一个代码块,表示无论是否发生异常,该代码块都会被执行。通常在需要释放资源的情况下使用 finally 块。在 finally 块中可以执行清理和关闭操作。注意,使用 System.exit(0) 可以阻止 finally 块的执行。
  • finalize 是在 java.lang.Object 类中定义的方法,因此每个对象都有该方法。finalize 方法在垃圾回收器启动并准备回收对象时被调用。

对象的 finalize 方法只会被调用一次。调用 finalize 方法并不一定会立即回收对象,因此在调用 finalize 方法后,对象可能再次变为不需要回收的状态。而在真正要回收对象时,由于之前已经调用过一次 finalize 方法,所以不会再次调用 finalize。因此,不推荐过度依赖 finalize 方法的使用。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题