gpt4 book ai didi

java - Concat 情况下实习生如何工作

转载 作者:行者123 更新时间:2023-12-02 12:09:41 25 4
gpt4 key购买 nike

String a = "x";
String b = a + "y";
String c = "xy";
System.out.println(b==c);

为什么它打印false

根据我的理解,“xy”(即 a+“y”)将被保留,当创建变量 c 时,编译器将检查字符串常量池中是否存在文字“xy”(如果存在),那么它将分配相同的引用c.

注意:我不是在问 equals() 与 == 运算符。

最佳答案

如果字符串是通过连接两个字符串文字形成的,它也将被保留。

String a = "x";
String b = a + "y"; // a is not a string literal, so no interning
------------------------------------------------------------------------------------------
String b = "x" + "y"; // on the other hand, "x" is a string literal
String c = "xy";

System.out.println( b == c ); // true

这是 Java 中字符串驻留的常见示例

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"; }

后面是它的输出

true
true
true
true
false
true

关于java - Concat 情况下实习生如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629268/

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