Java String 为什么设计成不可变

Java String 为什么设计成不可变

String 不可变是 Java 里非常重要的设计。它让字符串可以安全地放进常量池,也让 HashMap 这类结构能放心使用字符串作为 key。

不可变是什么意思

下面的代码看起来像修改了字符串:

String name = "java";
name = name + "-blog";

实际上原来的 java 没有被修改,而是创建了新的字符串对象,再让 name 指向新对象。

为什么这样设计

  • 线程安全:多个线程共享同一个字符串,不会互相改坏。
  • 哈希稳定:字符串作为 Map 的 key 时,hashCode 不会因为内容变化而变化。
  • 常量池复用:相同字面量可以复用,减少内存浪费。

什么时候用 StringBuilder

循环拼接大量字符串时,不要一直用 +

StringBuilder builder = new StringBuilder();
for (int i = 0; i < 1000; i++) {
builder.append(i).append(',');
}
String result = builder.toString();

   转载规则


《Java String 为什么设计成不可变》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录