在Stringpool中创建了多少个String对象?

时间:2017-11-15 07:43:40

标签: string string-concatenation string-pool string-constant

考虑以下示例:

String s1" Hello&#34 ;;

String s2 =" World&#34 ;;

String s3 = s2 + s3;

在上面的示例中,在Stringpool中创建了多少个对象?字符串s3是否已添加到Stringpool中,或者它是堆内存中的单独对象,还是JVM在堆中创建新对象并将其添加到字符串池中? 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

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

即使您执行s1 = s1 +“ World1”之类的操作;那么它也是String池中的一个新String(HelloWorld1),因为它将是为该修改创建的新String,并且s1对Hello的旧引用仍将以未引用的String的形式存在。