Java关键字之final
使用final的三种情况
final数据的用法
- 用于一个永不改变的"编译时常量"
- 用于一个运行时被初始化的值,而你不希望它被改变
- 一个即是static又是final的字段只能占据一段不能改变的存储空间
- final作用于基本数据类型是,是基本数据类型的值不能改变,作用于对象时是对象的引用不可改变。
final方法的使用
- 给方法上锁,防止子类通过覆写改变方法的行为。这是出于继承的考虑,确保方法的行为不会因继承而改变。
- 将一个方法指明为 final,就是同意编译器把对该方法的调用转化为内嵌调用。当编译器遇到 final 方法的调用时,就会很小心地跳过普通的插入代码以执行方法的调用机制(将参数压栈,跳至方法代码处执行,然后跳回并清理栈中的参数,最终处理返回值),而用方法体内实际代码的副本替代方法调用。这消除了方法调用的开销。但是如果一个方法很大导致代码膨胀,你也许就看不到内嵌带来的性能提升,因为内嵌调用带来的性能提高被花费在方法里的时间抵消了。
final类的使用
- 当一个类是final,就意味着它不能被继承。之所以这么做,是因为类的设计就是永远不需要改动,或者是出于安全考虑不希望它有子类。