final的用法
final可以用来修饰类或者变量或者方法
1)当一个类被final修饰的时候,表示该类不能被继承。类中的方法也默认为final;
2)当final修饰基本数据类型的变量时,表示该值在被初始化后不能更改;
当final修饰引用类型的变量时,表示该引用在初始化之后不能再指向其他的对象。
注意:final修饰的变量必须被初始化。可以在定义的时候初始化,也可以在构造函数中进行初始化。3)当final修饰方法时,表示这个方法不能被子类重写。
使用final方法的原因有2个:
第一、把方法锁定,防止任何继承类修改它的实现。
第二、高效。当要使用一个被声明为final的方法时,直接将方法主体插入到调用处,而不进行方法调用,可以提高程序的执行效率(ps:如果过多的话,这样会造成代码膨胀)。
为什么String类要设计成final类型的?
Java中不仅String是final的,Long、Double、Integer之类的都是final的。
1)如果一个字符串不是不可变的,那么使用一个引用更改该字符串将导致对其他引用使用错误的vlaue
2)因为字符串是不可变的,所以它在创建的时候hashCode就被缓存了,不需要重新计算
3)线程安全
4)为了防止扩展类无意间破坏原来方法的实现。
finally的用法
finally是异常处理的一部分,只能用在try-catch语句中,表示这段代码一般情况下,一定会执行。经常用在需要释放资源的情况下。
finalize的用法
是一次线程的自我拯救,是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法。