sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-12-02 05:30:14 28 4
mua khóa gpt4 Nike

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

String[] AnArray = new String[3];

for (int i=0; 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");
phá vỡ;
}
khác
AnArray[i] = astring;
}
}
for (String AnArray1 : AnArray) {
System.out.println(AnArray1);
}

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

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

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

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

1 Câu trả lời

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

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

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

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

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

28 4 0
Bài viết được đề xuất: java - 如何使用 LocalTime.parse 解析任何格式的时间?
Bài viết được đề xuất: string - 什么是字典顺序?
Bài viết được đề xuất: bdd - JBehave 在每个故事/场景的 @BeforeStory/BeforeScenario 之间设置映射
Bài viết được đề xuất: r - 根据条件求和相邻行
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com