java中final、finally、finalize的区别

简单区别


  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)运行机
制的一部分。

 

 

 

posted @ 2018-03-18 15:22  Yoguruto  阅读(208)  评论(0编辑  收藏  举报