• Java对象相等比较(Equals)


    以下代码显示如何实现equals()hashCode()方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    class Point {
      private int x;
      private int y;
     
      public Point(int x, int y) {
        this.x = x;
        this.y = y;
      }
     
      /* implement the equals() method */
      public boolean equals(Object otherObject) {
        // Are the same?
        if (this == otherObject) {
          return true;
        }
     
        // Is otherObject a null reference?
        if (otherObject == null) {
          return false;
        }
     
        // Do they belong to the same class?
        if (this.getClass() != otherObject.getClass()) {
          return false;
        }
     
        // Get the reference of otherObject in a SmartPoint variable
        Point otherPoint = (Point) otherObject;
     
        // Do they have the same x and y co-ordinates
        boolean isSamePoint = (this.x == otherPoint.x && this.y == otherPoint.y);
     
        return isSamePoint;
      }
     
      /*
       * implement hashCode() method of the Object class, which is a requirement
       * when you implement equals() method
       */
      public int hashCode() {
        return (this.x + this.y);
      }
    }
     
    public class Main {
      public static void main(String[] args) {
        Point pt1 = new Point(1010);
        Point pt2 = new Point(1010);
        Point pt3 = new Point(1219);
        Point pt4 = pt1;
     
        System.out.println("pt1 == pt1: " + (pt1 == pt1));
        System.out.println("pt1.equals(pt1): " + pt1.equals(pt1));
     
        System.out.println("pt1 == pt2: " + (pt1 == pt2));
        System.out.println("pt1.equals(pt2): " + pt1.equals(pt2));
     
        System.out.println("pt1 == pt3: " + (pt1 == pt3));
        System.out.println("pt1.equals(pt3): " + pt1.equals(pt3));
     
        System.out.println("pt1 == pt4: " + (pt1 == pt4));
        System.out.println("pt1.equals(pt4): " + pt1.equals(pt4));
      }
    }

    上面的代码生成以下结果。

  • 相关阅读:
    USTC 软硕讯飞班参考资源
    nginx 负载均衡
    Meidawiki 配置
    10 款实用的jquery插件
    Mongodb 定时释放内存
    互联网产品精神解读
    简单的缓冲区溢出实验
    fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
    C#的override、new、vitutal一例
    SQL Server 2008导入、导出数据库
  • 原文地址:https://www.cnblogs.com/hane/p/7338059.html
Copyright © 2020-2023  润新知