final、finally、finalize的区别

2019-02-28  本文已影响0人  闫安华仔

final修饰符(关键字)

  1. 被final修饰的类不能再派生子类,称为终态类(所以,一个类不能既被final修饰又被abstract修饰)。
  2. 被final修饰的方法不能被子类重写(但可以重载)。
  3. 被final修饰的变量不能被再次赋值,有且只能有一次赋值,称为常量(静态常量可以在声明时或静态代码块中赋值,普通常量可以在声明时或构造函数中赋值)。
  4. final也可以声明在方法的形参上,表示形参为常量,不能被篡改(实参可以是未被final修饰的变量)。

finally是在异常处理时提供finally块来执行清除操作的。

在异常处理时,finally块中的代码始终会被执行。

try {
    System.out.println("try");
    int i = 1/0;
} catch (Exception e) {
    System.out.println("catch");
    int i = 1/0;
} finally {
    System.out.println("finally"); //finally块中的代码始终被执行
}
//运行结果:
try
catch
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at cn.huazai.main.collection_interface.QueueExample.main(QueueExample.java:29)
finally

finalize:Object类中的一个方法

java技术允许使用finalize()方法在垃圾收集器(GC)将对象从内存中清除之前做必要的清理工作。这个方法是GC在确定了被清除对象没有被引用的情况下调用的。

finalize是在Object类中定义的,因此,所有的类都继承了它。子类可以覆盖finalize()方法,来整理系统资源或者执行其他清理工作。

上一篇 下一篇

猜你喜欢

热点阅读