final

151 阅读1分钟

final

final在java中有什么作用?

final作为java中的关键字可以用于三个地方。

用于修饰类类属性类方法

特征:凡是引用final关键字的地方皆不可修改!

<1>:修饰类

表示该类不能被继承;

<2>:修饰方法

表示方法不能被重写;

<3>:修饰变量

表示变量只能一次赋值以后值不能被修改(常量)

final有那些用法?

  • 被final修饰的类不可以被继承
  • 被final修饰的方法不可以被重写
  • 被final修饰的变量不可以被改变,如果修饰引用,那么表示引用不可变,引用指向的内容可变
  • 被final修饰的方法,JVM会尝试将其内联,以提高运行效率
  • 被final修饰的常量,在编译阶段会存入常量池中

除此之外,编译器对final域要遵守的两个重排序规则更好:

在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序,初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。