1、final、finally、finalize的区别?
final
- final是Java中的关键字,修饰符,用于声明属性、方法、类,被final声明后属性不可变,方法不可覆盖,类不可继承。
- final声明的类,他就不能派生出新的子类,所以不能作为父类。所以一个类不能同时被声明为abstruct抽象类和final类。
- final声明的方法,该方法只能被使用,不能重载。
- final声明的变量,在以后的引用中只能读取,不可修改,而且在声明时就给定初值。
finally
- Java中的一种异常处理机制,是异常处理语句结构的一部分,表示总是执行。
- finally结构使代码总是执行,不管有无异常发生。
- finally可以维护对象的内部状态,同时清理非内存资源。尤其在关闭数据库连接,如果将数据库连接的close()方法放到finally中会大大降低程序出错的概率
finalize
- Object类的一个方法,垃圾收集器执行时调用被回收对象的这个方法,如关闭文件。
- 它是在Object类中定义的,因此所的类都继承了它。
- 垃圾收集器在确定这个对象没被引用时,调用这个对象的finalize方法。
- 子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
- finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
不要重写finalize类,小米C++程序员重写finalize造成内存溢出(OOM),由于重写完构造方法之后要写析构函数,写逻辑很长,最后时间很长,造成内存溢出。
(abstruct抽象类:
重载:
引用:
close()方法:
Object类:
垃圾收集器:)