一、final
final: 可以修饰类、成员变量和成员方法。
类:不能被继承(比如 String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载,这里很多人会弄混),所以不能同时用 abstract 和 final 修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用)
方法:不能被重写,但是不影响子类使用父类中被final修饰的方法
成员变量:不可变的。如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变。如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象当中的内容是允许改变的。
什么时候使用 final 这个关键字?
把方法锁定,以防任何继承类修改它的含义
二、finally
使用环境:
通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)
功能:
当try中有return时执行顺序:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)