zoukankan      html  css  js  c++  java
  • Java学习--Equals与“==”

      在Java规范中,它对equals()方法的使用必须要遵循如下几个规则:

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

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

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

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

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

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

      在java中进行比较,我们需要根据比较的类型来选择合适的比较方式:

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

    覆写equals时推荐使用getClass进行类型判断。而不是使用instanceof

  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/liutoutou/p/3532501.html
Copyright © 2011-2022 走看看