在Java中,java.lang.Object
类是所有类的父类。每个类都直接或间接地继承自Object
。以下是Object
类中定义的主要方法:
Object
类的方法
-
public final Class<?> getClass()
- 返回一个表示对象运行时类的
Class
对象。
Object obj = new Object(); Class<?> clazz = obj.getClass(); System.out.println(clazz.getName()); // 输出: java.lang.Object
- 返回一个表示对象运行时类的
-
public int hashCode()
- 返回对象的哈希码值。用于哈希表(如
HashMap
)中的键。
Object obj = new Object(); int hash = obj.hashCode(); System.out.println(hash); // 输出: 哈希码值
- 返回对象的哈希码值。用于哈希表(如
-
public boolean equals(Object obj)
- 指示某个其他对象是否与此对象“相等”。
Object obj1 = new Object(); Object obj2 = new Object(); System.out.println(obj1.equals(obj2)); // 输出: false
-
protected Object clone() throws CloneNotSupportedException
- 创建并返回此对象的一个副本。需要实现
Cloneable
接口。
class MyClass implements Cloneable {@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} }MyClass obj1 = new MyClass(); MyClass obj2 = (MyClass) obj1.clone();
- 创建并返回此对象的一个副本。需要实现
-
public String toString()
- 返回对象的字符串表示形式。
Object obj = new Object(); System.out.println(obj.toString()); // 输出: 类名@哈希码的十六进制表示
-
public final void notify()
- 唤醒一个正在等待此对象监视器的线程。
synchronized (obj) {obj.notify(); }
-
public final void notifyAll()
- 唤醒所有正在等待此对象监视器的线程。
synchronized (obj) {obj.notifyAll(); }
-
public final void wait() throws InterruptedException
- 使当前线程等待,直到另一个线程调用此对象的
notify()
或notifyAll()
方法。
synchronized (obj) {obj.wait(); }
- 使当前线程等待,直到另一个线程调用此对象的
-
public final void wait(long timeout) throws InterruptedException
- 使当前线程等待,直到另一个线程调用此对象的
notify()
或notifyAll()
方法,或指定的时间已过。
synchronized (obj) {obj.wait(1000); // 等待1秒 }
- 使当前线程等待,直到另一个线程调用此对象的
-
public final void wait(long timeout, int nanos) throws InterruptedException
- 使当前线程等待,直到另一个线程调用此对象的
notify()
或notifyAll()
方法,或指定的时间(以毫秒和纳秒为单位)已过。
synchronized (obj) {obj.wait(1000, 500); // 等待1秒和500纳秒 }
- 使当前线程等待,直到另一个线程调用此对象的
-
protected void finalize() throws Throwable
- 当垃圾回收器确定不再有对该对象的引用时,由对象的垃圾回收器调用,以进行清理操作。但现在已被弃用(从Java 9开始)。
@Override protected void finalize() throws Throwable {try {// 清理操作} finally {super.finalize();} }
这些方法构成了Java中所有对象的基础行为,可以被子类重写(除了final
方法),以提供特定的功能。