想要确认两个对象是否相等,比较对象的完整信息(即对象的属性)
范例:
class Person{
String name;
int age;
//构造方法
public Person(String name,int age){
this.name = name;
this.age = age;
}
//普通方法
public void setName(String n){
name = n;
}
public void setAge(int a){
if(a>=0&&a<250){
age = a;
}
age = 0;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public void info(){
System.out.println("name =" + name + ",age = " + age);
}
}
public class TestDemo{
public static void main(String args[]){
Person perA = new Person("张三",20) ;
Person perB = new Person("张三",20) ;
System.out.println( perA == perB);
//要根据对象所拥有的属性信息进行比较
if(perA.getName().equals(perB.getName())
&& perA.getAge() == perB.getAge()){
System.out.println("两个对象相等");
} else {
System.out.println("两个对象不等");
}
}
}
结果:false
两个对象相等
判断两个对象,要比较两个对象的属性信息是否相等。
此方法确实实现了两个对象的比较,但是主方法涉及到的逻辑处理太多了。
范例二:对象的比较方法暂定为compare()
class Person{
String name;
int age;
//构造方法
public Person(String name,int age){
this.name = name;
this.age = age;
}
public boolean compare(Person per) {
//此时per对象已经在类的内部了,不受封装局限
//可以直接利用对象.属性进行访问
if(per == this){
//if(this.name.equals(per.name) && this.age = per.age){
return true;
}
if (per == null){
return false;
}
}
}
public class TestDemo{
public static void main(String args[]){
Person perA = new Person("张三",20) ;
Person perB = new Person("张三",20) ;
System.out.println( perA == perB);
if(perA.compare(perB){
System.out.println("两个对象相等");
} else {
System.out.println("两个对象不等");
}
}
}
结果:false
两个对象不等
对象的比较是一个类本身的具备的功能,比较的时候比较地址、判断是否为空,而后在判断各个属性。