Java String 为什么设计成不可变
String 不可变是 Java 里非常重要的设计。它让字符串可以安全地放进常量池,也让 HashMap 这类结构能放心使用字符串作为 key。
不可变是什么意思
下面的代码看起来像修改了字符串:
String name = "java"; |
实际上原来的 java 没有被修改,而是创建了新的字符串对象,再让 name 指向新对象。
为什么这样设计
- 线程安全:多个线程共享同一个字符串,不会互相改坏。
- 哈希稳定:字符串作为 Map 的 key 时,hashCode 不会因为内容变化而变化。
- 常量池复用:相同字面量可以复用,减少内存浪费。
什么时候用 StringBuilder
循环拼接大量字符串时,不要一直用 +:
StringBuilder builder = new StringBuilder(); |