Java从入门到放弃 · Object类中的toString方法和equals方法

“这是我参与8月更文挑战的第13天,活动详情查看: 8月更文挑战

Object类

Object类位于java.lang包下。

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。

每个类都默认继承Object类。

toString()方法

public String toString()

返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。
结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。
换句话说,该方法返回一个字符串,它的值等于: 
getClass().getName() + '@' + Integer.toHexString(hashCode())
复制代码
People people = new People();
String s = people.toString();
System.out.println(s);
复制代码

image.png
可以看到,如果没有重写Object类的toString方法,结果就是类名+“@”+十六进制表示的该对象的哈希码。

但是实际应用中,这个地址值对我们是没有什么实际意义的,所以我们一般根据我们的需要重写该方法。

equals()方法

public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。 
复制代码

equals 方法在非空对象引用上实现相等关系:

  • 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

  • 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

  • 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

  • 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

对于任何非空引用值 x,x.equals(null) 都应返回 false。

Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

写在最后

toString方法和equals方法都是我们经常使用的方法,大家应该充分理解。

以上就是两个方法的使用和一些易错点,如有不正之处,欢迎掘友们批评指正。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享