您的位置:首页 > 其它

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

2010-05-27 08:48 295 查看
 

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

第一步:

Code:

if (this == obj){   /*首先判断是否地址相等,如果地址相等,那么该对象一定相等,所以返回true*/  

      return true ;   

 }  

第二步:

Code:

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

    return false ;   

}  

第三步:

Code:

Person per = (Person)obj ;/*既然传入的obj对象与Person的实例是同一类型(前面一条if语句已经判断),那么我们可以进行向下转型操作,把obj对象转为Person对象*/  

if (per.name.equals (this.name)&&per.age==this.age){   

    return true ;//判断传入对象的属性和Person对象的属性是否相等,如果相等,返回true ,表示同一个对象   

}else {   

    return false ;//否则返回false   

}  

第四部::

以下是实现代码

Code:

class Person {   

      private String name ;   

      private int age ;   

      public Person (String name, int age){   

           this.name = name ;   

           this.age = age ;   

      }   

      public boolean equals (Object obj){   

            if (this == obj){   

                 return true ;   

            }   

            if (!(obj instanceof Person)){   

                return false ;   

            }   

            Person per = (Person)obj ;   

            if (per.name.equals (this.name)&&per.age==this.age){   

                return true ;   

            }else {   

                return false ;   

            }   

      }   

      public String toString (){   

          return ("名字:"+this.name+"/t"+"年龄:"+this.age);   

      }   

}   

public class ObjectCompareDemo{   

     public static void main (String[] args){   

         Person zhangsan = new Person ("张三",30);   

         Person lisi = new Person ("张三",30);   

         Person wangwu = new Person ("王五",30);   

         if (zhangsan.equals (lisi)){   

               System.out.println ("同一个人");   

         }else {   

               System.out.println ("不是同一个人");   

         }   

     }   

}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  equals string