gpt4 book ai didi

java - 为什么我的代码使用 'IF' 执行 'ELSE' 和 '==' ,但不使用 '.equals' 执行?

转载 作者:行者123 更新时间:2023-12-02 05:30:14 27 4
gpt4 key购买 nike

这里是 Java 新手,我正在使用 NetBeans 尝试一些简单的代码。该程序只是将一些字符串放入预定长度的数组中,而不允许添加以前使用过的字符串。

String[] AnArray = new String[3];

for (int i=0; i<AnArray.length; i++) {
System.out.println("Insert a string:");
Scanner s = new Scanner(System.in);
String astring = s.next();
for (String AnArray1 : AnArray) {
if (astring.equals(AnArray1)) { /* THIS IS WHERE I CHANGE astring.equals(AnArray1) TO astring == AnArray1 */
System.out.println ("String already used");
break;
}
else
AnArray[i] = astring;
}
}
for (String AnArray1 : AnArray) {
System.out.println(AnArray1);
}

如果该字符串已被使用,则应打印出一条消息“字符串已使用”并且不添加它,使该字段保留为空(null)。

如果我使用 .equals,它会正常工作(嗯,正如我所期望的那样)。但是,如果我使用“==”,它会打印出消息,但仍将(已使用的)字符串添加到数组中。

注意:感谢所有建议,但我非常感谢您能解释为什么会发生这种情况(而不是我应该如何改进代码)。

编辑:我不明白这是如何重复的。如果有人可以粘贴我的问题答案的相关部分,我将不胜感激。我的问题是:既然条件在两种情况下都是 True (使用 == 或 .equals),为什么 .equals() 遵循中断命令,而 == 触发 else AS IF 它也为 false?

最佳答案

我希望以下摘要对您的情况有所帮助:

  1. 使用 == 来比较原语,例如 boolean 值、int、char 等,而Java 中使用 equals() 比较对象。

  2. == 如果两个引用属于同一对象,则返回 true。的结果equals() 方法取决于重写的实现。

  3. 要比较字符串,请使用 equals() 而不是 == 相等运算符。

关于java - 为什么我的代码使用 'IF' 执行 'ELSE' 和 '==' ,但不使用 '.equals' 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205847/

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