Java比较两个对象

public class Computer {

String name;
String color;
int price;

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((color == null) ? 0 : color.hashCode());
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    result = prime * result + price;
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Computer other = (Computer) obj;
    if (color == null) {
        if (other.color != null)
            return false;
    } else if (!color.equals(other.color))
        return false;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    if (price != other.price)
        return false;
    return true;
}

}
这个类重写了Object类的equals方法谁能说一下这思路是什么样的?

阅读 2.5k
1 个回答

1.两个Object比较时(equals),比较的是内存地址.
那么创建两个对象是,尽管对象的各个属性值相同,但是equals的值也为false.

2.很明显这个答案不是我们想要的.我们想要比较的是对象的属性值.
那么通常在对象类里面,会重写equals方法.
重写就是判断对象里的属性值是否相同, 有的属性可以用==号判断,有的属性要用equals判断.
java的基础数据类型的判断是可以用==号的,因为判断的是值. 引用类型(Object)判断就要用equals.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏