1. 什么是 Object
类?
答: Object
类是 Java 中所有类的超类。每个类都使用 Object
作为树的根,所有对象(包括数组)都实现这个类的方法。
2. Object
类中有哪些重要的方法?
答:
equals(Object obj)
: 检测此对象与指定对象是否相等。hashCode()
: 返回对象的哈希码值。toString()
: 返回对象的字符串表示形式。clone()
: 创建并返回此对象的一个副本。getClass()
: 返回此对象的运行时类。wait()
: 在其他线程调用此对象的notify()
方法或notifyAll()
方法前,导致当前线程等待。notify()
: 唤醒在此对象监视器上等待的单个线程。notifyAll()
: 唤醒在此对象监视器上等待的所有线程。
3. equals()
和 hashCode()
方法有什么关系?
答: 在 Java 中,如果两个对象相等(即 equals()
方法返回 true),那么它们的 hashCode()
方法必须返回相同的整数值。这样做是为了优化哈希表的性能。
4. 为什么要覆盖 equals()
时也要覆盖 hashCode()
?
答: 如果只覆盖 equals()
而不覆盖 hashCode()
,将违反 equals()
和 hashCode()
的一致性原则,可能导致哈希表等基于哈希码的数据结构不正确地处理对象。
5. clone()
方法在使用时需要注意什么?
答: clone()
方法可以用来创建对象的浅拷贝。使用 clone()
方法时,类必须实现 Cloneable
接口,否则会抛出 CloneNotSupportedException
异常。此外,clone()
方法默认是浅拷贝,如果需要深拷贝,则需在 clone()
方法中适当处理。