考虑以下示例:
String s1" Hello&#34 ;;
String s2 =" World&#34 ;;
String s3 = s2 + s3;
在上面的示例中,在Stringpool中创建了多少个对象?字符串s3是否已添加到Stringpool中,或者它是堆内存中的单独对象,还是JVM在堆中创建新对象并将其添加到字符串池中? 在此先感谢:)
答案 0 :(得分:0)
在这种情况下,将在字符串池中创建3个字符串。一个用于Hello,一个用于WorLd,一个用于s3,由于字符串是不可变的,因此现在称为HelloWorld。
即使您执行s1 = s1 +“ World1”之类的操作;那么它也是String池中的一个新String(HelloWorld1),因为它将是为该修改创建的新String,并且s1对Hello的旧引用仍将以未引用的String的形式存在。