美文网首页
java - equals()

java - equals()

作者: 司鑫 | 来源:发表于2017-08-08 13:01 被阅读37次
一 equals 方法

equals() 是超类Object 中的一个方法,用来比较两个对象是否相等。

二 equals 和 ==

在 java 中所有的对象都有标识(内存地址)和状态(数据),使用未重写的 equals() 方法进行对象的比较 和使用 “==” 进行比较都是在比较两个对象的内存地址是否相等,而不是它们的状态(数据)是否相等。

未重写的 equals 方法的源码:

public boolean equals(Object obj) {
    return (this == obj);
}

如果我们想要实现对象之间数据的比较,那么我就应该要重写 equals 方法。在 JDK 中,String、Math 等都已经对 equals 进行了重写。所以我们在进行 String 的比较时,我们使用 equals 进行比较就是在对数据进行比较。

三 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,前提是对象上 equals 比较中所用的信息没有被修改
  • 对于任何非空引用值 x,x.equals(null) 都应返回 false

四 不同的类型应该进行不同的比较方式


  1. 对象域,使用equals方法 。
  2. 类型安全的枚举,使用equals或== 。
  3. 可能为null的对象域 : 使用 == 和 equals 。
  4. 数组域 : 使用 Arrays.equals 。
  5. 除float和double外的原始数据类型 : 使用 == 。
  6. float类型: 使用Float.foatToIntBits转换成int类型,然后使用==。
  7. double类型: 使用Double.doubleToLongBit转换成long类型,然后使用==。

相关文章

  • java-equals方法

    equals equals 方法是 java.lang.Object 类的方法。java默认的equals方法是比...

  • Java 比较相等

    Java Equals() 特性 Equals() 和 == 的区别 重写Equals方法 重写HashCode方法

  • equals和==的区别,小白也能懂!

    走进 equals & == 的世界! 就让我来先讲讲 equals 吧! equals 会点JAVA的同学应...

  • Kotlin ==,===,equals

    == 比较值(类似于java中的 equals)=== 比较地址 equals ...

  • 重写equals 方法的注意事项

    java.lang.Object 中的equals方法如下 什么时候需要重写equals方法 使用equals方法...

  • JAVA基础

    java基础 equals实现 object的方法 clone,equals,notify,notifyall,h...

  • 浅谈equals()和hashCode()

    equals()equals() 的作用是 用来判断两个对象是否相等。 Object.java中的equals()...

  • 面向对象语言特性

    ——Java中的equals()和== Java中的equals和==不仅是笔试面试中的常客,同时也是我们在写代码...

  • equals

    Java语言规范对equals方法的要求有如下: 自反性——x.equals(x)为真 对称性——x.equals...

  • Interview之一:hashCode 与equals

    1、hashCode 与 equals Java中的equals方法和hashCode方法是Object中的,所以...

网友评论

      本文标题:java - equals()

      本文链接:https://www.haomeiwen.com/subject/qgrtrxtx.html