# final 面试官:有木有想过为什么String的char前面加了final,有什么好处? 我:答这个问题,你要先说final是干啥的 final关键字主要用在三个地方:变量、方法、类。 - 对于一个final变量,如果是**基本数据类型的变量,则其数值一旦在初始化之后便不能更改**;如果是引用类型的变量,则在对其初始化之后便**不能再让其指向另一个对象**。 - 当用final修饰一个类时,表明**这个类不能被继承**。final类中的所有成员方法都会被隐式地指定为final方法。 - 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。 **final修饰有啥好处**:(面试官想听这三点) - final的关键字**提高了性能**,JVM和java应用会**缓存final变量**; - final变量可以在多线程环境下保持**线程安全**; - 使用final的关键字提高了性能,JVM会对方法变量类进行优化;