关于用equals()方法去比较对象

 

大家都知道可以利用equals()方法去比较一个对象的内容是否相等,用==去比较对象指向的地址是否相等,但是当一个对象里面有多个属性的时候,我们必须覆写equals()方法去达到我们的目的

第一步:

Code:
  1. if (this == obj){   /*首先判断是否地址相等,如果地址相等,那么该对象一定相等,所以返回true*/  
  2.       return true ;   
  3.  }  

第二步:

Code:
  1. if (!(obj instanceof Person)){//判断传入的参数是否为同一类型,如果不是同一类型的话,那么接下来的比较也毫无意义,所以不为同一类型的时候,返回false   
  2.     return false ;   
  3. }  

第三步:

Code:
  1. Person per = (Person)obj ;/*既然传入的obj对象与Person的实例是同一类型(前面一条if语句已经判断),那么我们可以进行向下转型操作,把obj对象转为Person对象*/  
  2. if (per.name.equals (this.name)&&per.age==this.age){   
  3.     return true ;//判断传入对象的属性和Person对象的属性是否相等,如果相等,返回true ,表示同一个对象   
  4. }else {   
  5.     return false ;//否则返回false   
  6. }  

第四部::

以下是实现代码

Code:
  1. class Person {   
  2.       private String name ;   
  3.       private int age ;   
  4.       public Person (String name, int age){   
  5.            this.name = name ;   
  6.            this.age = age ;   
  7.       }   
  8.       public boolean equals (Object obj){   
  9.             if (this == obj){   
  10.                  return true ;   
  11.             }   
  12.             if (!(obj instanceof Person)){   
  13.                 return false ;   
  14.             }   
  15.             Person per = (Person)obj ;   
  16.             if (per.name.equals (this.name)&&per.age==this.age){   
  17.                 return true ;   
  18.             }else {   
  19.                 return false ;   
  20.             }   
  21.       }   
  22.       public String toString (){   
  23.           return ("名字:"+this.name+"/t"+"年龄:"+this.age);   
  24.       }   
  25. }   
  26. public class ObjectCompareDemo{   
  27.      public static void main (String[] args){   
  28.          Person zhangsan = new Person ("张三",30);   
  29.          Person lisi = new Person ("张三",30);   
  30.          Person wangwu = new Person ("王五",30);   
  31.          if (zhangsan.equals (lisi)){   
  32.                System.out.println ("同一个人");   
  33.          }else {   
  34.                System.out.println ("不是同一个人");   
  35.          }   
  36.      }   
  37. }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值