DESKTOP-86ONKLH_20200904-刘天阳

1、问题

final 、finally 、finalize 的区别

相同

  • 这三个词除了长的像,没有任何关系

区别

  • final 关键字是个修饰符表示最终的、不可更改
    • 被 final 修饰的类,没有子类
    • 被 final 修饰的方法,不能被重写
    • 被 final 修饰的变量,在初始化后不能再次赋值 (不能二次赋值)
  • finally 关键字用于异常处理
    • finally 不能单独使用,必须跟 try … 语句 或 try … catch 语句连用
    • 程序运行时,不论是否发生异常,finally 代码块都会执行
    • 除非遇到 System.exit 方法,否则 finally 代码块一定会执行
  • finalize 是 Object 类中定义的一个实例方法
    • finalize 方法是 Java 语言诞生之初为了向C++程序员妥协而提供的一个类似于C++中析构函数的方法
    • finalize 方法不是析构函数!finalize 方法不是析构函数!finalize 方法不是析构函数!
    • 当垃圾回收器(GC)执行垃圾回收操作时,可能会通过调用某个对象的 finalize 方法
    • 当垃圾回收器(GC)调用某个对象的 finalize 方法时,可能导致该对象重新恢复到可触及状态,从而无法回收该对象所占用的内存
    • 当垃圾回收器(GC)调用某个对象的 finalize 方法后,仍然没有任何引用变量再引用该对象,则GC会回收该对象所占用的内存

2、吐槽

考试了!考试了!考试了!