gpt4 book ai didi

java - 用 + 连接创建的字符串是否存储在字符串池中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:35 25 4
gpt4 key购买 nike

例如

 String s = "Hello" + " World";

我知道池中有两个字符串“Hello”和“World”,但是,“Hello World”会进入字符串池吗?

如果是这样,那又如何呢?

String s2 = new String("Hola") + new String(" Mundo");

每种情况下池中有多少个字符串?

最佳答案

是的,如果 String 是通过连接两个 String literals 形成的,它也将被保留。

来自 JLS:

Thus, the test program consisting of the compilation unit (§7.3):

package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + " ");
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
}
}
class Other { static String hello = "Hello"; }
and the compilation unit:
package other;
public class Other { static String hello = "Hello"; }

产生输出:

true
true
true
true
false
true

重要的是第4行和第5行。4代表你在第一种情况下要问什么;图 5 向您展示了如果 one 不是文字(或更一般地说,编译时常量)会发生什么情况。

关于java - 用 + 连接创建的字符串是否存储在字符串池中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com