世界上没有两片相同的树叶!一片桂花树叶是一个对象,世界上不存在两片相同的桂花树叶。生活中,比较同类对象是一个常见话题,比较常常令人沮丧或兴奋。例如,比较两个国家的科技水平、比较两个人的信息等。借用this关键字能实现两个对象的比较,一般情况是两个同类对象比较。
下列程序演示了对象比较。第18行定义compare()方法实现当前对象this与另一个对象other进行数据成员的比较,如果所有数据成员信息相同返回true,否则返回false;第33行p1.compare(p2),p1是this,p2是other;第34行比较p1与p2的引用(地址),显然p1与p2是不同的两个对象,输出false。
package chapter02;
class Person{
private String name;
private String sex;
private int age;
public Person() {}
public Person(String name,String sex,int age){
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public void display(){
System.out.println("姓名:" + this.name);
System.out.println("性别:" + this.sex);
System.out.println("年龄:" + this.age);
}
public boolean compare(Person other){
boolean flag = false;
if(other == null)
return false;
if(this.name.compareToIgnoreCase(other.name) == 0 & this.sex.compareToIgnoreCase(other.sex) == 0 & this.age == other.age)
flag = true;
return flag;
}
}
public class example16 {
public static void main(String[] args) {
Person p1 = new Person("孙悟空","男",25);
Person p2 = new Person("孙悟空","男",25);
p1.display();
p2.display();
boolean comp = p1.compare(p2);
boolean compAddress = (p1 == p2);
System.out.println("p1与p2比较内容的结果:" + comp);
System.out.println("p1与p2比较引用的结果:" + compAddress);
}
}
程序运行结果如下。
比较对象有两个角度:比较对象内容;比较对象引用。上述程序中第33行调用compare()方法比较p1与p2的内容,第34行p1==p2比较p1与p2的引用。