==
- 对于基本类型,比较的是值
- 对于引用类型,比较的是内存地址
equals()
- 该方法是Object中的方法,若未被重写则就是==
public boolean equals(Object obj) {
return (this == obj);
}
- 通常重写对象的equals()方法,用来判断两个对象是否相等,Java中的内置类一般都已经重写了equals()方法,例如String
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = length();
if (n == anotherString.length()) {
int i = 0;
while (n-- != 0) {
if (charAt(i) != anotherString.charAt(i))
return false;
i++;
}
return true;
}
}
return false;
}
- 重写equals()方法流程
- 判断是否是同一个对象的引用,如果是直接返回true
- 检查是否是同一类型,如果不是直接false
- 将对象强转成当前的类型
- 判断两个对象中的每个属性是否都相等,基本类型用==比较,对象用equals()比较,都相等则返回true,否则false
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return id == user.id &&
age == user.age &&
Objects.equals(name, user.name);
}
hashCode()
参考资料