【发布时间】:2015-05-27 14:34:08
【问题描述】:
在下面的示例中,我期望 equals() 返回 true:
public class flower {
String flower;
public flower (String flower) {
this.flower = flower;
}
public static void main(String[] args) {
flower one = new flower("Flower");
boolean isSame = false;
if(one.equals("Flower")) {
isSame = true;
}
System.out.print(isSame);
}
}
但是,我得到的结果是false...是因为我将一个对象与String 进行比较?我阅读了equals() 方法,据说将Strings 与Objects 进行比较。为什么我得到的结果为false,尽管它们是相同的?
【问题讨论】:
-
看看Object类中定义的
equals()的实现。 -
它们不相同。他们甚至不是同一个班级。一个属性的值与另一个属性相等(但不相同)。这远远不足以满足
equals()。 -
这是我的车。 (想象一下欧宝 Corsa。)这是倍耐力 PT-1004 轮胎。 (想象一下 Pirelli PT-1004 轮胎。)我的车绝对不等于轮胎,尽管我的车确实碰巧穿着 Pirelli PT-1004轮胎。即使你偷了我的 3 个轮胎,只留给我一个,这也不是平等的。它不会。曾经。等于。到轮胎。
-
你为什么不去 Stack Overflow 问问,你在question blocked 那里吗? meta.stackexchange.com/a/129632/165773
-
@MikeNakis:“它不会。永远。平等。轮胎。”如果您的汽车和轮胎定义
equals(),则它们可以相互相等。
标签: java language-features comparison