1.不可改变---执行效率高
2.因为String这个对象基本是被所有的类对象都会使用的到了,如果可以被复写,就会很乱套,比如map的key ,如果是一个string为key的话,String如果可以改变的话,你想想后果
3.执行效率可以这么解释,面向对象有一个多态的性质,如果可以改变,就可以被复写,子类如果复写了某个方法,虚函数表就被用上了;如果是final型的,jvm就直接去用了,根本不用去虚函数表里面找
----------只要声明成final ,JVM才不用对相关方法在虚函数表中查询,而直接定位到string类的相关方法上,提高了执行效率。基础类以保证执行效率为第一要素。
4.从设计思想来解释这个 为什么要弄成final类型的
语言本身就是一种设计。任何设计思想都是会遵守一些既定的规则,这样才能体现一致性。无论是人类语言,还是机器语言,都有它们的约束规则。
Long, Double, Integer 之类的全都是final的 程序的基石是不可被改变的
5.也可以从安全的角度来解释定义成final,6.String被广泛使用,避免多态的影响,或者他提供的函数已经非常的丰富了,你再去扩展有点多余