谈谈final、finally、finalize的区别

final是Java中用于声明变量、方法、类的关键字(修饰符)

用final声明的变量不可改变。如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变,如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象中的内容是允许改变的。

用final修饰的方法不可重写,但是子类可以用父类中final修饰的方法;

用final修饰的类不能被继承,类中的方法不能被重写,所以不能同时用abstract和final修饰类(abstract修饰的是抽象类,抽象类是用于被子类继承的,和final冲突)


 

finally是区块标志,是异常处理语句结构的一部分,常用于try-catch-finally

finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获都会被执行。finally块则是无论异常是否发生都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,可以放在finally块中(关闭数据库连接的close方法)


 

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等

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

 


参考:https://www.cnblogs.com/wisefulman/p/10584515.html

 

 

posted @ 2020-03-07 22:57  来杯水果茶  阅读(370)  评论(0编辑  收藏  举报
Live2D