0

考虑以下示例:

字符串 s1 "你好";

字符串 s2 = "世界";

字符串 s3 = s2 +s3;

在上面的例子中,Stringpool 中创建了多少个对象?字符串 s3 是添加到 Stringpool 还是它是堆内存中的单独对象,或者 JVM 是否在堆中创建新对象并将其添加到 stringpool?提前致谢 :)

4

1 回答 1

0

在这种情况下,将在字符串池中创建 3 个字符串。一个用于 Hello,一个用于 WorLd,一个用于 s3,它现在是 HelloWorld,因为字符串是不可变的。

即使你做了类似 s1=s1+"World1"; 那么它也将是字符串池中的一个新字符串(HelloWorld1),因为它将是为该修改创建的一个新字符串,并且 s1 对 Hello 的旧引用仍将作为未引用的字符串存在。

于 2018-10-31T15:26:01.653 回答