Java对象相等比较(Equals)

Posted SXT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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));
  }
}

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

 

以上是关于Java对象相等比较(Equals)的主要内容,如果未能解决你的问题,请参考以下文章

Java中比较对象

Java 中 equals 和 == 的区别

Java中怎么比较两个字符串是不是相等?

Java 判断两个对象是否相等

java中如何判断两个变量相等

equals和==的区别 (Java基础)