String为什么不可变?
String
真正不可变有下面几点原因:
- 保存字符串的数组被
final
修饰且为私有的,并且String
类没有提供/暴露修改这个字符串的方法。 String
类被final
修饰导致其不能被继承,进而避免了子类破坏String
不可变。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
private final char value[];
//...
}
详情可以参考https://www.zhihu.com/question/20618891/answer/114125846