这可能是有史以来最愚蠢的问题,但我认为这对 Java 新手来说相当困惑。
1.谁能解释一下 immutable 是什么意思?
2.为什么字符串是不可变的?
3.不可变对象的优缺点是什么?
4.为什么可变对象(如StringBuilder
)比 String 更受青睐?
如果能提供一个很好的示例(Java),我们将不胜感激。
"不可变"意味着不能更改值。如果您有一个 String 类的实例,那么您调用的任何看似修改值的方法实际上都会创建另一个 String。
String foo = "Hello";
foo.substring(3);
<-- foo here still has the same value "Hello"
要保留更改,您应该这样做 foo = foo.sustring(3);
在使用集合时,不可变与可变的对比可能会很有趣。想想如果使用可变对象作为 map 的键,然后更改值会发生什么(提示:想想 equals
和 hashCode
)。