跳转至

String为什么设计成不可变的?

面试回答

面试官: String 为什么设计成不可变的?

你:

主要是安全、高效、并发这三点。

第一,安全。 字符串常量池里的东西,比如类名、数据库连接密码,如果谁都能改,一个地方改了,其他引用全跟着变,系统就崩了。不可变能防止这种注入和篡改。

第二,线程安全。 不可变对象天生就是共享安全的,多个线程同时读同一个字符串,不用加锁。

第三,性能优化。 不可变性使得 hash 值可以缓存,做 HashMap 的 key 时取 hash 很快。另外常量池可以共享同一个字符串对象,省内存。

简单说,如果 String 可变,上面的好处全没了,还会带来莫名其妙的 bug。

deepseek_mermaid_20260612_15223f.png