Java 中所有类隐式或显式继承 java.lang.Object。子类继承 Object 的方法,常需重写以符合业务语义。核心方法包括:
equals(Object obj):默认比较引用地址(即 ==),通常重写为比较对象内容(如数据成员)。toString():默认返回 类名@哈希码,重写可返回有意义的字符串表示。hashCode():返回哈希码,配合 equals 用于哈希容器,重写 equals 时必须重写 hashCode。class Demo {
private int num;
Demo(int num) { this.num = num; }
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Demo)) return false;
Demo d = (Demo) obj; // 向下转型
return this.num == d.num; // 比较内容
}
@Override
public String toString() {
return "demo:" + num;
}
}
public class ObjectDemo {
public static void main(String[] args) {
Demo d1 = new Demo(4);
Demo d2 = new Demo(4);
System.out.println(d1); // 自动调用 toString() -> demo:4
System.out.println(d1.equals(d2)); // true,内容相等
}
}
关键点:
Object,需 instanceof 判断后向下转型。num)。System.out.println(obj) 会自动调用 obj.toString()。重写后可直接输出业务信息,调试极其方便。
equals 必须重写 hashCode,保证相等对象哈希码相等。Objects.equals()、Objects.hash()(Java 7+)简化实现。