【Java】Object类有哪些常见方法?一篇搞定!
·
好久没更新文章啦,今天回归!!讲一下Object类有哪些常见方法?
Object类是所有类的基类,如果一个类没有明确继承其他类,那么它默认会继承Object类,有以下常见方法。
1.toString():
- 返回对象的字符串表示形式。
- 默认实现:返回类名 + “@” + 哈希码(例如 com.example.MyClass@123456)
但是返回这种结果是没有什么意义的,所以一般都要重写这个方法。
2.equals(Object obj):
- 判断两个对象是否相等。
- 默认实现: 比较两个对象的引用是否相等(是否是同一个对象)。
- 需要根据业务重写该方法,比如:比较两个对象的属性值都相同就认为它们相等。
注意: 重写equals方法时,必须同时重写hashCode()方法。
3.hashCode()
- 返回对象的哈希值,主要用于哈希表(HashMap,HashSet)。
- 默认实现: 返回对象的内存地址经过哈希计算后得到的值。
注意:
如果两个对象通过 equals() 方法比较结果为 true,那么它们的 hashCode() 必须相同。
但是,hashCode() 相同的两个对象,equals() 比较结果不一定为 true。
所以一般是先hashCode() ,再equals() 。
4.getClass():
- 返回对象运行时的类(Class对象)。
- 该方法被声明为final,无法被重写。
- 常用于反射,类型检查(如 instanceof) 等场景。
5.clone():
- 创建并返回该对象的一个副本。
- 类必须实现Cloneable 接口,否则会抛出CloneNotSupportedException 异常。
- 默认实现: 进行浅拷贝,即只复制对象本身以及其基本数据类型的属性,而引用类型的属性仍然指向原对象的引用。
- 建议: 通常要重写该方法,以实现深拷贝。
6.notify()、notifyAll() 和 wait()
- 用于线程间的协作。
notify(): 随机唤醒一个在该对象上等待的线程。
notifyAll(): 唤醒所有在该对象上等待的线程。
wait(): 使当前线程进入等待状态,直到其他线程调用该对象的 notify() 或 notifyAll() 方法。
注意: 这些方法必须在同步块(synchronized)中调用。
更多推荐

所有评论(0)