JAVA中的Final、Finally、Finalize的区别

JAVA中的Final、Finally、Finalize的区别

[TOC]

1、final

  • final修饰符(关键字)被final修饰的,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。
  • 变量声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取而不可修改。
  • 方法声明为final,被final声明的方法也同样只能使用,即不能在子类中被重写。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public  class  finalTest{
final int a=6;//final成员变量不能被更改
final int b;//在声明final成员变量时没有赋值,称为空白final

public finalTest(){
b=8;//在构造方法中为空白final赋值
}
int do(final x){//设置final参数,不可以修改参数x的值

return x+1;
}
void doit(){
final int i = 7;//局部变量定义为final,不可改变i的值
}
}

2、finally

​ finally是在异常处理时提供finally块来执行任何清除操作。通常放在try…catch的后面构造总是执行的代码块,不管有没有异常被抛出、捕获,finally块都会被执行;这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,阔以将释放外部资源的代码写在finally的语句块中。

3、finalize

  • finalize是Object类中定义的方法。因此所有的类都继承了它。子类重写finalize ( ) 方法以整理系统资源或者被执行其他清理工作。
  • java语言允许使用finalize ( ) 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
  • 这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
  • finalize ( ) 方法是在垃圾收集器销毁对象之前对这个对象调用的。

ps:基于finally中的涉及到的异常,我们谈谈java中errorexception的区别!

Error 与 Exception 的区别


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!