String为什么要设计为final的
为什么jdk中把String类设计成final? http://blog.csdn.net/fenglibing/article/details/5486449
【翻译】为什么Java中的String不可变 http://www.cnblogs.com/wavky/p/why-string-is-immutable-in-java.html
String的不可变特性设计就是出于效率和安全性的考虑
- 满足 String Pool (String intern pool) 字符串保留池的需要
- 缓存Hashcode的需要
- 安全性:String被广泛用于网络连接、文件IO等多种Java基础类的参数中,如果String内容可变的话,将潜在地带来多种严重安全隐患,例如链接地址被暗中更改等
- 不可变对象在物理上绝对性的线程安全