final关键字

final是Java中的关键字,可以修饰变量,方法,类 

final 这个关键字的含义是这是无法改变的或者终态的;一旦引用使用final修饰,那么这个引用就不能再改变,否则,编译器将会报编译错误。

修饰变量

1
public static final int TOKEN_EXPIRE = 3600*24 * 2;

这是我在代码中定义过的一个final变量,用final修饰以后,该值不可变,再次对TOKEN_EXPIRE赋值就会报错。
如果修饰引用类型,那么该引用不可变,但是引用的对象是可以被改变的。

修饰类

String类是一个被final修饰的类,那么被final修饰的类,不可被继承,如果一个类不希望被继承,可以用final修饰,被final修饰的类中的所有方法都被final修饰,也就是不可被重写 这就是String类不可变的原因。

修饰方法

final关键字修饰方法说明该方法不可被子类重写。

修饰形参

该形参在方法中不可被改变。

好处

  1. final关键字提高了性能。JVM和Java应用都会缓存final变量。
  2. final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
  3. 使用final关键字,JVM会对方法、变量及类进行优化。

注意

按照Java代码惯例,final变量就是常量,而且通常常量名要大写。
final关键字不同于finally关键字,后者用于异常处理。
final关键字容易与finalize()方法搞混,后者是在Object类中定义的方法,是在垃圾回收之前被JVM调用的方法。
final关键字即使在定义的时候未被赋值,但是在每个构造器中一定要赋值,如果没有赋值,系统也不会为它赋值,该变量定义出来毫无意义。