zoukankan      html  css  js  c++  java
  • 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));
      }
    }

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

  • 相关阅读:
    VSCode远程编写Shell并实时调试配置过程
    eclispe 无法启动调试 cannot connect to VM
    工作流之设置表访问权限
    利用工作流返回达到无限次重复办理业务的过程
    eworkflow工作流系统在iis中发布
    ie8用ajax访问不能每次都刷新的问题
    视频演示(动态指定执行人+指定申请人的上级)
    视频演示eworkflow集成定制aspx页面的过程
    利用开发框架中的标签库集成报表工具
    流程设计器之标签工具
  • 原文地址:https://www.cnblogs.com/hane/p/7338059.html
Copyright © 2011-2022 走看看