Java 中的 String 类被设计为 不可变(Immutable),这是 Java 设计中一个非常关键的特性。不可变性意味着一旦一个 String 对象被创建,它的值就不能被修改。这种设计并非随意决定,而是出于 安全性、性能优化、线程安全、一致性 等多方面的考虑。
一、什么是不可变对象?
不可变对象是指对象在创建后其状态(属性)不能被修改的对象。在 Java 中,String 是一个典型的不可变类:
String类是final的,不能被继承。String内部使用private final char[] value来存储字符序列,即内部字符数组是final的,创建后不能更改。- 所有对
String的操作(如substring()、replace()、toUpperCase())都会返回一个新的String实例,而不是修改原对象。
二、为什么设计成不可变的?
1. 安全性(Security)
不可变性可以防止对象在使用过程中被恶意修改,从而增强系统的安全性。
✅ 场景示例:
- 作为密钥(Key):
String常用于HashMap、HashSet等集合中作为键(Key)。如果String是可变的,修改其值将导致哈希值变化,从而破坏集合的结构,甚至引发数据丢失或错误。
Map<String, Object> map = new HashMap<>();
String key = "key"

1196

被折叠的 条评论
为什么被折叠?



