我创建了一个只有一个 String
字段的类。然后我创建了两个对象,我需要使用 ==
操作符和 .equals()
方法来比较它们。以下是我的代码:
public class MyClass {
String a;
public MyClass(String ab) {
a = ab;
}
public boolean equals(Object object2) {
if(a == object2) {
return true;
}
else return false;
}
public boolean equals2(Object object2) {
if(a.equals(object2)) {
return true;
}
else return false;
}
public static void main(String[] args) {
MyClass object1 = new MyClass("test");
MyClass object2 = new MyClass("test");
object1.equals(object2);
System.out.println(object1.equals(object2));
object1.equals2(object2);
System.out.println(object1.equals2(object2));
}
}
编译后,它显示两次false作为结果。如果两个对象具有相同的字段“test”,为什么会是假的?
equals
和equals2
:任何时候你遇到这种形式的代码:if(a){ return true; } else { return false; }
,你应该直接写成return a
。 - yshavittrue
,否则返回false
。例如,if(a.equals(object2)) { return true; } else return false
可以简化为return a.equals(object2)
。 - yshavit