Java Object 类中有什么方法,有什么作用?
Java 的 Object 类是所有类的“祖宗类”,每个类都继承了它的方法。以下是 Object 类中主要方法的作用,用大白话解释:
1. toString()
- 作用:返回对象的“自我介绍字符串”。比如打印对象时,默认会调用这个方法。
- 默认行为:输出对象的类名 + 内存地址(比如
java.lang.Object@1b6d3586
)。 - 实际应用:通常需要重写这个方法,让对象显示更有意义的信息。
2. equals(Object obj)
- 作用:判断两个对象是否“相等”。默认比较的是内存地址(即是否是同一个对象)。
- 实际应用:通常需要重写这个方法,根据对象的属性判断逻辑相等。
3. hashCode()
- 作用:返回对象的“哈希码”(整数),用于哈希表(如 HashMap、HashSet)快速定位对象。
- 规则:如果两个对象通过
equals()
判断相等,它们的hashCode()
必须相同。 通常需要和 equals()一起重写,否则会导致哈希表功能异常。
4. getClass()
- 作用:返回对象的运行时类(比如
Person.class
)。 - 用途:反射操作、判断对象类型。
5. clone()
- 作用:创建并返回当前对象的一个“副本”。
- 注意:默认是浅拷贝(基本类型复制值,引用类型复制地址)。 需要实现 Cloneable 接口,否则会抛出异常。实际开发中较少使用,常用复制构造函数或序列化代替。
6. finalize()
- 作用:对象被垃圾回收前调用,用于资源释放(如关闭文件)。
- 现状:Java 9 后标记为废弃(不推荐使用),因为无法保证何时执行,可能导致性能问题。
7. 线程协作方法:wait()
, notify()
, notifyAll()
- 作用:控制线程等待和唤醒(必须在同步代码块中使用)。 wait():让当前线程等待。notify():随机唤醒一个等待的线程。notifyAll():唤醒所有等待的线程。
- 用途:多线程场景下协调资源竞争(如生产者消费者模式)。
总结:
- 常用方法:
toString()
、equals()
、hashCode()
通常需要重写。 - 少用方法:
clone()
、finalize()
。 - 线程相关:
wait()
、notify()
等需要谨慎使用。