final是一个java关键字,可以用来修饰类,方法和变量(成员变量或局部变量)。
(1)当用final修饰类的时,表明该类不能被其他类所继承。final类中所有的成员方法都会隐式的定义为final方法。
(2)修饰方法时,防止继承类对其进行更改。
(3)修饰变量时,表示常量,只能被赋值一次,赋值后其值不再改变。
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。
finalize()是在java.lang.Object里定义的,每一个对象都有这么个方法。这个方法在gc启动前,该对象被回收前被调用。
特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。
finalize()的调用具有不确定行,只保证方法会调用,但不保证方法里的任务会被执行完(比如一个对象手脚不够利索,磨磨叽叽,还在自救的过程中,被杀死回收了)。