为什么根据定义是不可变的字符串可以改变它的大小?

Why a String which by definition is immutable can change its size?

提问人:Aled 提问时间:7/14/2023 更新时间:7/14/2023 访问量:16

问:

我知道 String 是不可变的,这意味着一旦创建它就无法更改其大小(不能变大或变小),也不能更改其任何字符。现在,我找到了 2 个例子,对我来说有点不清楚。

因此,在此示例中,字符串 s 将从 “1” -> “123” 变为。所以它首先会改变它的大小,会变得更大。但是字符串是不可变的,为什么呢??

 String s = "1";   // s holds "1"
 s += "2";         // s holds "12"
 s +=3;            // s holds "123"

然后我还有另一个使用 concat 方法的例子:

String s1 = "1";
String s2 = s1.concat("2");
s2.concat("3");
System.out.println(s2);

这里的答案是“12”,我理解它,因为我创建了一个新的 String 对象 s2,它可以更改其大小并与 s1 连接,然后对于 S2,与 s3 连接将不起作用。

我的问题是为什么在第一个示例中允许将所有这些值连接到字符串 s?

字符串 串联 不变性 可变

评论

1赞 Peter234 7/16/2023
这回答了你的问题吗?Java 中字符串的不可变性

答: 暂无答案