Study of Java-Object类

在Java中,只有基本数据类型不是对象,而所有对象归属的类型都扩展自Object类。因此,对Object类的学习就显得非常重要。本篇文章主要介绍Object类的几个重要方法:equals方法,hashcode方法,以及toString方法。

1. Object类的equals方法

equals方法的功能是检测两个对象是否相等。需要特别注意的是,Object类对这个方法默认的操作是判断两个对象的引用是否相同。然而对于很多情况下,我们所需要的是判断两个对象的状态或值是否相等,这时我们就需要对equals方法做override,需要注意的是,这个重载也要满足几个原则才能保证正确性和合理性。

1) 自反性 2) 对称性 3) 传递性 4)一致性

前三点是等价性通常的三条原则,都比较容易理解。这里对于第四点的“一致性”稍加解释:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)(或y.equals(x))应该返回同样的结果。

另外在日常编程过程中,如果需要对数组类型的域做相等性判断,可以使用Arrays.equals方法,这个方法会检测数组元素是否相等。

2. Object类的hashCode方法

hashCode方法是由对象映射出相应的散列码。注意,Object类默认的hashCode方法返回的散列码是对象的存储地址。

同样,在很多情况下我们需要override该hashCode方法,因为equals方法与hashCode方法的定义必须一致。这里所说的一致指的是:如果x.equals(y)的值为真,那么x.hashCode()与y.hashCode()返回的散列值就必须相同。

在日常编程过程中,对于数组类型的域,可以用Arrays.hashCode方法计算散列码,与Arrays.equals方法配合使用。

3. Object类的toString方法

toString方法是Object类定义的又一个基础且重要的方法,它返回一个表示对象的字符串。Object类对toString方法也有默认操作,多是类名加上域值。toString方法作为一种常见且有效的调试方法,程序员可以定义自己的toString方法。并且自定义toString方法是被强烈推荐的,这样可以将关键信息的描述非常方便得展现出来。

综上,对于这三个重要的方法,Object类都有默认的操作。我们首先要了解这些默认操作是怎么做的,它们的特点是什么样的。这样,当我们需要对这些方法进行重载时,遵循着一定的原则,就能根据自己的需要对它们进行改造。

猜你喜欢

转载自blog.csdn.net/qq512028505/article/details/80718385