Java中对String为什么设计成不可变的

Sting的几个概念:
1.String类是final类,不能被继承,并且它的成员方法默认为fianl方法
2.String类其实是通过char数组来保存的
3.String对象一旦被创建就不可改变,相关的任何change操作都会生成一个新的对象
4.使用String不一定会创建新的对象
5.使用 new String 一定会创建对象

String为什么不可变:
1.常量池思想:字符串常量池的需要,若允许改变,那么将会引起各种逻辑错误,例如 String s1 = "abcd"; String s2 = "abcd"; s1,s2都指向常量池中的同一个字符串,如果改变s1那么s2的逻辑也会跟着改变

2.HashCode:允许String对象缓存HashCode,字符串的不变性保证了HashCode的唯一性,可以放心缓存

3.安全性:String被许多的库(类)用作参数,例如网络连接URL,文件路径等

推荐阅读更多精彩内容