【Java】final关键字使用方法整理

final的作用

  • 在早期使用final,会将final方法转为内嵌调用,
    • 内嵌调用:用一个方法去调用另一个方法,当编译器发现方法是final的,它会把另外方法的内容全部挪过来,相当于是在同一个方法中执行,而不进行方法的调用。
    • 因为方法直接的调用会有一定的性能损耗,所以可以提高程序运行的效率
  • 现在:
    • 类防止被继承、方法防止被重写、变量防止被修改
    • 天生是线程安全的,而不需要额外的同步开销
    • 现在的JVM会尽量优化代码的编译,因此早期带来的性能提升在现在是可以忽略的

final修饰变量

属性被声明为final以后,该变量只能被赋值一次。且一旦被赋值以后,final的变量值就不能再改变。

赋值时机不同:
  • 类中的final属性
    • 第一种是在声明变量的等号右边直接赋值
    • 第二种是在构造函数中赋值
    • 第三种是在类的初始化代码块中赋值
    • 必须要选择赋值的时机,而不能不赋值,这是final语法规定的
  • 类中的static final 属性
    • 在声明变量的等号右边可以直接赋值
    • 用static初始化代码块里赋值,不能在普通初始代码块中赋值
    • 必须要赋值
  • 方法中的final变量
    • 不规定赋值时机,但是要求在使用之前必须赋值
    • 如果不被使用,就可以不赋值

final修饰方法

  • 构造方法不允许final修饰
  • 不可以被重写

final修饰类

  • 不可以被继承
  • 例如 String类

猜你喜欢

转载自blog.csdn.net/weixin_42020386/article/details/107948672