如果现在有两个Person类对象(name、age属性)那么要比较两个对象是否相等,则需要各个属性分别比较,如果全部都相同,则表示相等。于是可以写出下面代码
class Person{
private String name;
private int age;
public Person(){}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class TextDemo9{
public static void main(String ages[]){
Person perA = new Person("张三",20);
Person perB = new Person("张三",20);
if(perA.getName().equals(perB.getName()) && perA.getAge() == perB.getAge()){
System.out.println("两个对象相等。");
} else{
System.out.println("两个对象不相等。");
}
}
}
这种代码可以进行进行比较但是有问题
此时的代码所有的验证功能都交给了主方法完成,实际上主方法就是一个客户端,在主方法中不应该牵扯过多的业务逻辑,只需要简单的操作即可。另外信息的比较过程,应该是每个对象都具备的功能,应该是在类之中定义好的。
class Person{
private String name;
private int age;
public Person(){}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
//暂定方法名称为compare()
//此方法会具备两个对象:当前对象this、传入的Person
public boolean compare(Person person){
//当对象传回到类之中的时候可以直接利用“对象.属性”访问
if(this == person){ //地址相同
return true;
}
if(person == null){
return false;
}
if(this.name.equals(person.name) && this.age==person.age){
return true;
}
return false;
}
}
public class TextDemo9{
public static void main(String ages[]){
Person perA = new Person("张三",20);
Person perB = new Person("张三",20);
if(perA.compare(null)){
System.out.println("两个对象相等。");
} else{
System.out.println("两个对象不相等。");
}
}
}