Java关键字之final

164 阅读1分钟

使用final的三种情况

  • 数据
  • 方法

final数据的用法

  • 用于一个永不改变的"编译时常量"
  • 用于一个运行时被初始化的值,而你不希望它被改变
  • 一个即是static又是final的字段只能占据一段不能改变的存储空间
  • final作用于基本数据类型是,是基本数据类型的值不能改变,作用于对象时是对象的引用不可改变。

final方法的使用

  • 给方法上锁,防止子类通过覆写改变方法的行为。这是出于继承的考虑,确保方法的行为不会因继承而改变。
  • 将一个方法指明为 final,就是同意编译器把对该方法的调用转化为内嵌调用。当编译器遇到 final 方法的调用时,就会很小心地跳过普通的插入代码以执行方法的调用机制(将参数压栈,跳至方法代码处执行,然后跳回并清理栈中的参数,最终处理返回值),而用方法体内实际代码的副本替代方法调用。这消除了方法调用的开销。但是如果一个方法很大导致代码膨胀,你也许就看不到内嵌带来的性能提升,因为内嵌调用带来的性能提高被花费在方法里的时间抵消了。

final类的使用

  • 当一个类是final,就意味着它不能被继承。之所以这么做,是因为类的设计就是永远不需要改动,或者是出于安全考虑不希望它有子类。