String如何实现不可变的

📅 2026/8/1 3:38:48
String如何实现不可变的
靠四层层层上锁缺一不可底层存文字的容器叫value数组一排格子存所有字符public final class String private final char[] value;第一层private私有 value 数组防止普通人摸到容器第二层final修饰 value 数组箱子不能整体换掉第三层String 类本身是 final不能被继承篡改逻辑第四层所有修改 API 全部返回新对象绝不改原数组Java 里所有看似能改字符串的方法replace、substring、concat、toUpperCase、拼接 全都不会碰原来的 value 数组。 执行逻辑统一复制原有数组的字符创建全新的 value 数组存放修改后的文字新数组包装成新 String 返回 原来的老字符串、老 value 数组纹丝不动。总结private底层数组藏起来正常代码摸不到final value不能整体替换底层数组final String 类不能继承重写方法作弊修改方法均返回新对象原数组永不改动。