Object类是Java所有类的根父类,定义了equals()(需与hashCode()同步重写)、hashCode()(遵守相等对象哈希值相同规则)、toString()(应返回关键状态信息)及wait()/notify()/notifyAll()(须在synchronized中调用)等核心方法。

Object 类是 Java 中所有类的根父类,每个类都直接或间接继承它。它定义了对象最基本的行为和能力,掌握这些方法对理解 Java 对象模型、编写健壮代码至关重要。
equals():判断两个对象是否“逻辑相等”
默认实现比较的是对象引用(即内存地址),但多数场景需要按业务含义判断相等性,比如两个 User 对象只要 id 相同就认为相等。因此,重写 equals() 时必须同时重写 hashCode(),否则可能破坏 HashMap、HashSet 等集合的正确性。常见写法包括:先判 null 和类型,再逐字段比较(推荐用 Objects.equals() 避免空指针)。
hashCode():为哈希结构提供整数标识
返回一个 int 值,用于哈希表快速定位。规则很明确:如果两个对象 equals() 返回 true,它们的 hashCode() 必须相同;反之不成立。String、Integer 等包装类已正确实现,自定义类若参与哈希集合操作,就必须重写它。常用工具是 Objects.hash(field1, field2)。
toString():提供可读的对象描述
默认返回“类名@十六进制哈希码”,调试和日志中几乎不可读。重写后应简洁体现关键状态,例如 Person.toString() 可返回 "Person{name='张三', age=25}"。IDE 通常支持自动生成,但要注意避免包含敏感信息或大对象引用(如未初始化的集合)。
立即学习“Java免费学习笔记(深入)”;
wait()/notify()/notifyAll():线程间协作的基础原语
这三个方法用于在 synchronized 块内实现线程等待与唤醒。wait() 让当前线程释放锁并进入等待队列;notify() 唤醒一个等待线程;notifyAll() 唤醒全部。它们不是普通方法,调用前必须持有对象锁,否则抛 IllegalMonitorStateException。实际开发中更推荐使用 java.util.concurrent 包下的高级工具(如 Condition),但理解这组方法是读懂并发底层的关键。
不复杂但容易忽略。










