Object 类的常见方法?

Object 类的常见方法?
Object 类是所有类的父类,因此所有类都可以调用它的方法。它提供了以下 11 个方法,可以分为六类:
对象比较:
- public native int hashCode(): 这是一个本地方法,用于返回对象的哈希码。主要在哈希表中使用,比如 Java 中的 HashMap。
- public boolean equals(Object obj): 用于比较两个对象的内存地址是否相等。String 类重写了该方法,用于比较字符串的值是否相等。
对象拷贝:
- protected native Object clone() throws CloneNotSupportedException: 这是一个本地方法,用于创建并返回当前对象的副本。通常情况下,对于任何对象 x,表达式 x.clone() != x 为 true,x.clone().getClass() == x.getClass() 为 true。Object 本身没有实现 Cloneable 接口,因此如果没有重写 clone 方法并进行调用,会抛出 CloneNotSupportedException 异常。
对象转字符串:
- public String toString(): 返回类的名字@实例的哈希码的 16 进制字符串表示。建议 Object 的所有子类都重写该方法。
多线程调度:
- public final native void notify(): 这是一个本地方法,并且不能被重写。用于唤醒在此对象监视器上等待的线程。如果有多个线程在等待,只会随机选择一个线程进行唤醒。
- public final native void notifyAll(): 这是一个本地方法,并且不能被重写。与 notify 方法类似,唯一的区别是会唤醒在此对象监视器上等待的所有线程,而不仅仅是一个线程。
- public final native void wait(long timeout) throws InterruptedException: 这是一个本地方法,并且不能被重写。暂停当前线程的执行。需要注意的是,sleep 方法并不会释放锁,而 wait 方法会释放锁。timeout 参数表示等待的时间。
- public final void wait(long timeout, int nanos) throws InterruptedException: 与上一个 wait 方法相似,但额外添加了 nanos 参数,表示等待的附加纳秒数(范围为 0-999999)。因此,超时时间还需要加上 nanos 毫秒。
- public final void wait() throws InterruptedException: 类似于前面两个 wait 方法,区别在于该方法一直等待,没有超时的概念。
反射:
- public final native Class<?> getClass(): 这是一个本地方法,用于返回当前运行时对象的 Class 对象。由于使用了 final 关键字修饰,因此不允许子类重写该方法。
垃圾回收:
- protected void finalize() throws Throwable: 通知垃圾收集器回收对象。