欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中final、finally、finalize的区别

程序员文章站 2022-11-18 10:55:59
简单区别 详细区别 final关键字 定义变量,包括静态和非静态的。 final修饰的是一个基本对象,就表示这个变量被赋予的值是不可变的,它是一个常量。并且表示它只能被赋值一次。 被final定义的变量必须被初始化:1》在定义时被初始化。 2》final变量在初始化模块中初始化,不可以在静态块中初始 ......

简单区别


  1. final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
  2. finally是异常处理语句结构中的一部分,表示总是执行。
  3. finalize是Object类的一个方法,在垃圾收集齐执行的时候会调用被回收对象的此方法提供,提供垃圾收集时的其他资源回收。

详细区别


final关键字

  • 定义变量,包括静态和非静态的。

  final修饰的是一个基本对象,就表示这个变量被赋予的值是不可变的,它是一个常量。并且表示它只能被赋值一次。

  被final定义的变量必须被初始化:1》在定义时被初始化。 2》final变量在初始化模块中初始化,不可以在静态块中初始化。 3》静态final变量在静态初始化块中初始化,不可以在初始化模块中初始化。 4》final变量可以在类的构造器中初始化,但静态final变量不可以。

 被final定义的方法,不可以被子类重写,但不影响它被子类继承。

 被final定义的类不能被继承,由于关键字abstract定义的抽象类必须被继承它的子类重写而实现抽象类中的方法,所以final和abstract不能用来修饰同一个类。

finally关键字

 finally关键字只能用于try/catch语句中:

try{

}catch{

}finally{
    System.out.println("执行了finally语句块"); 
}
 输出"执行了finally语句块"说明程序抛出了异常,执行finally语句块捕获程序抛出的异常之后,即不加处理,
也不继续向上抛出异常。
 而且finally语句块不受return,continue和break关键字的阻碍。

inalize关键字
最后,我们再来看看finalize,它是一个方法,属于java.lang.Object类,它的定义如下:Java代
码protected void finalize() throws Throwable { }众所周知,finalize()方法是GC(garbage collector)运行机
制的一部分。