Final从字面意思上看 “最终的,不可改变的”,是Java中的一个关键字.
(1) 用来修饰变量(成员变量和局部变量),该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;final经常与static一起声明常量。

(2)用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
(3)修饰方法,表示该方法无法被重写;
(4)修饰类,表示该类无法被继承。java中有很多类是final类,比如String,Integer及其它包装类;
使用 final 修饰的第一个好处是安全;第二个好处是高效。
(1)第一个好处是安全,Java 语言之父 詹姆斯·高斯林 (James Gosling),说迫使String类设计成不可变的另一个原因是安全,当你在调用其他方法时,比如调用一些系统级操作指令之前,可能会有一系列校验,如果是可变类的话,可能在你校验过后,它的内部的值又被改变了,这样有可能会引起严重的系统崩溃问题,这是迫使 String 类设计成不可变类的一个重要原因。(这是James Gosling在2001年5月的一次访谈中,谈到了不可变类和String)
(2)第二个好处是高效,以 JVM 中的字符串常量池来举例,只有字符串是不可变时,我们才能实现字符串常量池,字符串常量池可以为我们缓存字符串,提高程序的运行效率;
原文:https://www.cnblogs.com/liaowenhui/p/12497108.html