【发布时间】:2012-11-03 11:24:52
【问题描述】:
我用一个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));
}
}
编译后显示两次错误结果。如果两个对象具有相同的字段 - “test”,为什么它是错误的?
【问题讨论】:
-
顺便说一句,看看
equals和equals2:任何时候你有if(a) { return true; } else { return false; }形式的东西,你可能应该写return a。 -
@yshavit 你的意思是,从布尔值更改为字符串?
-
不,您的代码询问布尔值是否为真,如果是则返回
true,否则返回false。例如,if(a.equals(object2)) { return true; } else return false可能只是return a.equals(object2)。
标签: java class object methods equals