gpt4 book ai didi

java - 使 `str1 == str2` 成为逻辑错误的特殊情况是什么?

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

我知道java商店String LiteralsCommon Pool并且具有相同文本的两个字符串文字将引用公共(public)池中的相同位置。采取以下代码:

String str1 = "Amir";
String str2 = "Amir";

现在都是str1str2指公共(public)池中的同一位置。因此,据我们所知,我们必须使用 equals() 来正确比较这两个字符串,显然 str1.equals(str2)将是true

现在从我读到的here它说 str1 == str2将为 true,因为这两个字符串具有相同的地址(听起来很合乎逻辑),但它也表明这样做是一个逻辑错误。

我的问题是,如果我使用str1 == str2,可能会给我的代码带来麻烦和不一致的特殊情况是什么? ?

最佳答案

不是特殊情况,常见情况:

String base = "Amir123";
String str1 = base.substring(0, 4);
String str2 = "Amir";
System.out.println(str1.equals(str2)); // true
System.out.println(str1 == str2); // false

Live Copy

String str1 = "Amir";
String am = "Am";
String ir = "ir";
String str2 = am + ir;
System.out.println(str1.equals(str2)); // true
System.out.println(str1 == str2); // false

Live Copy (谢谢 JLRishe)

基本上,任何时候在运行时创建字符串而不是在编译时完全形成字符串时,默认情况下它将是一个新的 String 对象,所以不是 == 另一个等效的 String 对象。

关于java - 使 `str1 == str2` 成为逻辑错误的特殊情况是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40258876/

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