gpt4 book ai didi

java - 字符串等于和 == 与字符串连接

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:14 25 4
gpt4 key购买 nike

<分区>

我试图理解字符串连接与字符串比较的输出。需要明确的是,我有类(class)使用 == 和等号来比较两个字符串。我正在尝试将 == 和 equals() 的输出连接到一个字符串。 equals() 的输出连接,但 == 连接的输出。使用java的装箱功能,与字符串连接的 boolean 值将接触。据我所知,等于和 == 都返回 boolean 值。那么为什么会有这种差异呢?谁能解释一下?

public class StringHandler {

public void compareStrings() {
String s1 = new String("jai");
String s2 = "jai";
String s3 = "jai";
System.out.println("Object and literal compare by double equal to :: "
+ s1 == s2);
System.out.println("Object and literal compare by equals :: "
+ s1.equals(s2));
System.out
.println("Literal comparing by double equal to :: " + s2 == s3);
System.out.println("Literal comparing by equals :: " + s2.equals(s3));
}

public static void main(String[] args) {
StringHandler sHandler = new StringHandler();
sHandler.compareStrings();
}
}

输出

false
Object and literal compare by equals :: true
false
Literal compareing by equals :: true

更新:回答

如果 s1==s2 没有括号,JVM 会将字符串比较为“对象和文字比较, double 等于::jai”== “jai”,结果为 false。所以 sysout 中的实际内容并没有被打印出来。添加括号后,JVM 将字符串与“jai”==“jai”进行比较,结果为

对象和字面量比较等于::true

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