类 Object 是类层次结构的根类
一、Object类系统的介绍
- 所有的类都间接或直接的继承Object类
- 也都实现了这个类的所有方法
- 下面概括的Object类中的所有方法
二、toString()
public String toString()
【通常】toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
为什么要建议所有子类都重写此方法?
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
在Object类中返回一个字符串,该字符串由
类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。
这样的返回在外人看起来是没有意义的,所以建议所有子类都重写此方法。
三、equals()和hashCode()
public boolean equals(Object obj)
- 指示其他某个对象是否与此对象“相等”。
public boolean equals(Object obj) {
return (this == obj);
}
- 这不符合我们的常规需求 ,我们一般希望比较的是对象业务系统的内容是否相同
- 所以equals()在有需求的时候也可以重写
- 注意:equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Person person = (Person) o;
return idCard == person.idCard;
}
@Override
public int hashCode() {
return Objects.hash(idCard);
}