【面试干货】Object 类中的公共方法详解
- 1、clone() 方法
 - 2、equals(Object obj) 方法
 - 3、hashCode() 方法
 - 4、getClass() 方法
 - 5、wait() 方法
 - 6、notify() 和 notifyAll() 方法
 
|  
      
     💖The Begin💖点点关注,收藏不迷路💖 
       | 
在 Java 中,Object 类是所有类的超类(或称为父类)。它包含了一些重要的公共方法,这些方法为所有 Java 对象提供了基础的行为。下面我们将详细探讨这些公共方法。
1、clone() 方法
clone() 方法是 Object 类中的一个保护方法,用于创建并返回此对象的一个拷贝。 这个拷贝是一个 浅拷贝,意味着如果对象中的字段是引用类型,那么拷贝的只是引用地址,而不是引用的对象本身。
注意:只有实现了 Cloneable 接口的类才可以调用 clone() 方法,否则会抛出 CloneNotSupportedException 异常。
public class MyClass implements Cloneable {  
    @Override  
    protected Object clone() throws CloneNotSupportedException {  
        return super.clone();  
    }  
}  
  
MyClass original = new MyClass();  
MyClass cloned = (MyClass) original.clone();
 
2、equals(Object obj) 方法
equals() 方法在 Object 类中用于比较两个对象是否相等。 在 Object 类中,equals() 方法的默认实现是比较两个对象的引用是否相等,这与 == 操作符的行为是一致的。
但是,在实际开发中,我们经常需要比较对象的内容是否相等,因此子类通常会重写 equals() 方法。
@Override  
public boolean equals(Object obj) {  
    if (this == obj) return true;  
    if (obj == null || getClass() != obj.getClass()) return false;  
    MyClass other = (MyClass) obj;  
    // 比较对象的字段是否相等  
    return /* 比较字段的逻辑 */;  
}
 
3、hashCode() 方法
hashCode() 方法返回该对象的哈希码值。 哈希码在哈希表中非常重要,因为哈希表通过哈希码来快速定位对象在表中的位置。当重写 equals() 方法时,通常也需要重写 hashCode() 方法,以确保相等的对象具有相同的哈希码。
@Override  
public int hashCode() {  
    // 生成哈希码的逻辑  
    return /* 哈希码值 */;  
}
 
4、getClass() 方法
getClass() 方法是一个 final 方法,用于返回表示此 Object 运行类(由哪个类创建的实例)的 Class 对象。
Class<?> clazz = obj.getClass();
 
5、wait() 方法
wait() 方法使当前线程等待该对象的锁,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者等待的时间超过了指定的时间。当前线程必须是该对象的拥有者,也就是具有该对象的锁。
synchronized (obj) {  
    while (/* 等待条件 */) {  
        obj.wait(); // 等待,直到其他线程调用 notify 或 notifyAll  
    }  
    // 处理等待后的逻辑  
}
 
6、notify() 和 notifyAll() 方法
notify() 方法唤醒在此对象监视器上等待的单个线程(如果有的话)。
notifyAll() 方法唤醒在此对象监视器上等待的所有线程。这两个方法也必须在同步块或同步方法中调用。
synchronized (obj) {  
    // 改变等待条件  
    obj.notify(); // 唤醒一个等待的线程  
    // 或  
    obj.notifyAll(); // 唤醒所有等待的线程  
}
 

|  
      
     💖The End💖点点关注,收藏不迷路💖 
       | 


















