String类为什么是final的
1 主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的⾼度被使⽤率, 可能会降低程序的性能,所以String被定义成final。
2、不允许其他类继承。这个应该不是最终原因,但这⾥权且也当成是⼀个原因。
3、 String类中的成员属性也⼏乎都设计成了private final的,这样String就被设计成⼀个不变类,这样有助于共享,提⾼性能。可以将字符串对象保存在字符串常量池中以供与字⾯值相同字符串对象共 享。如果String对象是可变的,那就不能这样共享,因为⼀旦对某⼀个String类型变量引⽤的对象值改变,将同时改变⼀起共享字符串对象的其他 String类型变量所引⽤的对象的值。
4、String被设计为不变类,其中的offset,value[]都被设计成private final的,这样在多线程时,对String对象的访问是可以保证安全的。java程序语⾔的许多特性依赖于不可变的String对象。
其他 包括Integer Long Character 被设计成final的原因类似