gpt4 book ai didi

java - 字符串比较奇怪的bug

转载 作者:行者123 更新时间:2023-11-29 09:38:36 24 4
gpt4 key购买 nike

我的代码中有一个奇怪的错误。我有变量类型,当我从类设置加载它时(实现持久化)它有值“CPU 21”(类型=“CPU 21”),但是当我尝试 if(type=="CPU 21") 条件为假。这怎么可能?

最佳答案

这根本不是错误。这就是 == 的工作方式。

对于引用类型(如字符串),“==”总是直接比较引用。如果您有两个引用具有相同内容的不同对象,则“==”的计算结果为 false。使用 equals 实现值相等。

请注意,使用内部字符串字面值很容易自欺欺人:

String x = "CPU 21";
String y = "CPU 21";
boolean b = (x == y);

现在 b 为真,因为 xy 的值 - 引用实际上是相同的。他们指的是同一个 String 对象。将其与此进行比较:

String x = new String("CPU 21");
String y = new String("CPU 21");
boolean b1 = (x == y);
boolean b2 = x.equals(y);

现在 b1 是 false 因为 xy 引用不同的 String 对象,但是 b2 为真,因为 String.equals(String) 比较所讨论字符串的内容(即字符串表示的字符序列)。

关于java - 字符串比较奇怪的bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733126/

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