梳理一下 Java 中 Obejct 类的相关知识
本文最后更新于 2025年8月10日 17:36
Java 中的 Object 类是所有类的父类。
== 和 equals()
的区别
类型 | == |
equals() |
---|---|---|
基本类型 | 比较值是否相等(数据内容)。 | 不适用(基本类型没有 equals() 方法)。 |
引用类型 | 比较对象的引用(内存地址是否相同)。 | 比较对象的内容(通过 equals() 方法自定义比较)。 |
equals()
方法存在两种使用情况:
- 类没有重写 **
equals()
**方法:通过equals()
比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是Object
类equals()
方法。 - 类重写了 **
equals()
**方法:一般我们都重写equals()
方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。String
中的equals
方法是被重写过的,其比较的是字符串的内容。
hashCode()
的作用
hashCode()
的作用是获取哈希码(int
整数),也称为散列码。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()
方法是本地方法,也就是用 C 语言或 C++ 实现的。
这个方法主要是用来判断两个对象是否相等:
- 如果两个对象的
hashCode
值相等,那这两个对象不一定相等(哈希碰撞)。 - 如果两个对象的
hashCode
值相等并且equals()
方法也返回true
,我们才认为这两个对象相等。 - 如果两个对象的
hashCode
值不相等,我们就可以直接认为这两个对象不相等。
为什么重写 equals()
时必须重写 hashCode()
方法
因为两个相等的对象的 hashCode
值必须是相等。也就是说如果 equals
方法判断两个对象是相等的,那这两个对象的 hashCode
值也要相等。如果重写 equals()
时没有重写 hashCode()
方法的话就可能会导致 equals
方法判断是相等的两个对象,hashCode
值却不相等。
Object 类中主要提供的 11 个方法
1 |
|
梳理一下 Java 中 Obejct 类的相关知识
http://example.com/2025/08/10/梳理一下 Java 中 Obejct 类的相关知识/