1. Object类有哪些核心方法?作用是什么?
- 答案:
-
equals(Object obj)
:比较对象内容是否相等(默认比较地址,需重写)。hashCode()
:返回对象哈希值,用于哈希表(如HashMap)。toString()
:返回对象字符串表示(默认类名@哈希值,建议重写)。wait()/notify()/notifyAll()
:线程间通信,需在同步代码块中使用。clone()
:创建对象副本,需实现Cloneable
接口。getClass()
:返回对象的运行时类(反射基础)。finalize()
:垃圾回收前调用(已废弃,不建议使用)。
2. 为什么重写equals()时必须重写hashCode()?
- 答案:
根据约定,若两个对象equals()
为true
,它们的hashCode()
必须相同。否则在使用哈希集合(如HashMap
)时,对象可能无法正确检索。例如:两个相等的对象因哈希值不同被放入不同桶,导致逻辑错误。
3. == 和 equals() 的区别?
- 答案:
-
==
:比较基本类型的值或对象的内存地址。equals()
:默认行为同==
,但可重写为内容比较(如String
类)。
4. wait()和sleep()的区别?
- 答案:
wait() |
sleep() |
释放锁 |
不释放锁 |
属于Object类 |
属于Thread类 |
需在同步块中使用 |
任意位置调用 |
通过 |
时间到自动恢复 |
5. 如何实现对象的克隆(clone())?深拷贝与浅拷贝区别?
- 答案: