Java中final、finally、finalize的区别
2018-05-31 本文已影响10人
HelloFei
final、finally、finalize的区别
这三者的出镜率还挺高的,就简单记录下,以后会再写详细的总结和分析下每个具体的的用法和知识点
1、final修饰符(关键字)可用于修饰类、变量和方法,用于表示它修饰的类、方法和变量不可改变。
final 修饰变量时,表示该变量一旦获取了初始值就不可被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。final修饰的变量不可被改变,一旦获取了初始值,该final变量的值就不能被重新赋值。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。
2、finally(关键字)是在异常处理时,try-catch-finally语句中使用,finally快常用来处理一些后续的工作
在执行过程中,只要存在finally块,最终都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行;finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。
3、finalize 是Java中的一个方法名。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。Java中所有类都从Object类中继承finalize()方法。
当垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法。那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。