【day01】详解面试题:equals与==的区别

230 阅读2分钟

equals说明

1.equals方法是object类的一个方法

image.png

官方文档说明:

image.png

翻译:

指示某个其他对象是否“等于”此对象。 equals 方法在非空对象引用上实现等价关系:

它是自反的:对于任何非空引用值 x,x.equals(x) 应返回 true。

它是对称的:对于任何非空引用值 x 和 y,x.equals(y) 应返回 true 当且仅当 y.equals(x) 返回 true。

它是传递的:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true,则 x.equals(z) 应返回 true。

它是一致的:对于任何非空引用值 x 和 y,x.equals(y) 的多次调用始终返回 true 或始终返回 false,前提是不修改对象上相等比较中使用的信息。对于任何非空引用值 x,x.equals(null) 应返回 false。

类 Object 的 equals 方法在对象上实现了最具辨别力的可能等价关系;也就是说,对于任何非空引用值 x 和 y,此方法返回 true 当且仅当 x 和 y 引用同一对象(x == y 的值为 true)。请注意,每当重写 hashCode 方法时,通常需要重写此方法,以便维护 hashCode 方法的一般协定,该协定声明相等的对象必须具有相等的哈希码。参数:obj – 要与之比较的参考对象。返回:如果此对象与 obj 参数相同,则为 true;否则为假。

String类equals方法

image.png

image.png

说明:

  1. 判断引用地址是否相等
  2. 判断是否是字符串类型
  3. 判断长度是否相等
  4. 判断每个字符是否相等 5.该方法用于判断值是否相等

总结:

  1. 对于基本数据类型==比较的是值是否相等

  2. 对于非基本数据类型

    • 不重写equals方法,此时和==的功能相同,比较的引用是否相等
    • 重写equals方法,比如String类用于判断值是否相等