关于用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方法,Hashcode方法和两个对象的比较
- JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
- 判断是否是同一人的方法——equals()?在Person类中提供一个比较的方法compare()返回boolean值?对象自己和自己比?
- equals方法比较对象内容,而不是地址,利用String类源代码。
- 两个对象用equals方法比较为true,它们的Hashcode值相同吗?
- 运用“==”运算符与equals()方法对对象进行比较
- Java 中String对象比较方法equals和等号==
- 如何使用==操作符,Equals方法,ReferenceEquals方法,IEquatable接口比较2个对象
- Java进阶:深入equals方法对象相等比较
- java类对象进行equals比较的方法
- 判断比较两个对象是否是一个对象(equals方法)
- 重写equals()和hashCode()方法,用于比较对象的内容
- 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明
- 比较对象的时候复写equals方法
- Java中两个对象的比较 equals()方法和==号的区别
- 对象之间比较 重写hashCode和equals方法
- 包装类对象之间值的比较,全部使用 equals 方法比较
- 对象的比较,排序,重写equals(),compareTo(),hashCode()方法
- 关于Java的对象equals方法
- 关于ajax对象一些常用属性、事件和方法大小写比较常见的问题总结