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( 10 10 );
     Point pt2 =  new  Point( 10 10 );
     Point pt3 =  new  Point( 12 19 );
     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));
   }
}

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

 

转载于:https://www.cnblogs.com/hane/p/7338059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值