object类是java所有类的根父类,提供tostring()和equals()等基础方法;tostring()应重写以返回关键字段的可读字符串,避免耗时操作;equals()重写需同时重写hashcode()并遵守契约。

Object 类是 Java 中所有类的根父类,每个类都默认继承它,哪怕没写 extends Object。它提供了所有对象共有的基础行为,其中 toString() 和 equals() 是最常用、也最需要合理重写的两个方法。
toString():让对象“说出自己是谁”
当你执行 System.out.println(obj) 或把对象拼接到字符串中时,Java 会自动调用它的 toString() 方法。如果不重写,它默认返回类似 ClassName@1b6d3586 的格式——这是类名加哈希码的十六进制表示,对调试和日志几乎没帮助。
- 重写建议包含关键字段,比如学生对象可返回
"Student{name='张三', age=20}" - 集合(如
ArrayList.toString())内部也会递归调用元素的toString(),所以重写后打印整个列表更清晰 - 避免在
toString()中做耗时操作或抛异常,它应是轻量、安全的描述性方法
equals():定义“两个对象是否相等”
默认的 equals() 和 == 效果一样,只判断是否指向同一内存地址。但多数场景下,我们关心的是内容是否一致——比如两个 Student 对象姓名和年龄都相同,就该视为相等。
- 重写时必须同时重写
hashCode(),否则放入HashMap或HashSet会出现逻辑错误 - 典型写法:先判空、再判引用、再判类型、最后逐字段比较(推荐用
Objects.equals(a, b)简化空值处理) - 遵守对称性、传递性、一致性等契约,否则集合类行为不可预测
其他高频相关方法
hashCode() 返回整数哈希值,用于散列表快速定位;getClass() 获取运行时类对象,常用于类型安全的 equals() 判断;clone() 支持对象复制,但需实现 Cloneable 接口且注意深浅拷贝问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











