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方法谁能说一下这思路是什么样的?
1.两个Object比较时(equals),比较的是内存地址.
那么创建两个对象是,尽管对象的各个属性值相同,但是equals的值也为false.
2.很明显这个答案不是我们想要的.我们想要比较的是对象的属性值.
那么通常在对象类里面,会重写equals方法.
重写就是判断对象里的属性值是否相同, 有的属性可以用==号判断,有的属性要用equals判断.
java的基础数据类型的判断是可以用==号的,因为判断的是值. 引用类型(Object)判断就要用equals.