Object对象里面有一个finalize方法,这个方法其实很少用,但是既然是Object里面的方法,就有必要来讲一下,因为Object是所有类的根类,它里面的方法每一个类里面都会有。所以它里面的方法是很重要,包含了设计者的很多考虑。
finalize方法在jdk里面的解释是一个对象在被GC回收之前会调用finalize方法,通常用来做一些系统资源的整理工作,为什么要有这个方法呢,因为GC是只能自动帮我们回收内存里面的对象,也就是new出来的对象,但是有些资源并不是内存里面的,所以就有必要重写finalize方法,在回收对象之前,进行资源的整理,例如流的关闭,socket的关闭等等,虽然jvm并不保证会立马执行,但是起码提升了概率。但是现在呢jdk里面并不提倡子类重写finalize方法,因为这个方法并不保证一定会执行。
通常面试的时候会问到:final/finally/finalize这三者的区别,呵呵,当然是因为这三者比较相像。其实这个问题很基础,虽然finalize方法很少用到,但是面试的时候可能会被问到,有点儿类似于应试教育,不过现在知道了这个之后,这个问题应该就很清楚了,前面两个很简单。