2022.0508学习Java笔记之对象比较

该博客探讨了在Java中如何优化Person类对象的比较逻辑,将比较功能从主方法移至类内部,实现更清晰的业务逻辑。通过定义一个`compare`方法,使得对象自身能够判断与其他对象是否相等,提高了代码的可读性和复用性。
摘要由CSDN通过智能技术生成

如果现在有两个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("两个对象不相等。");
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值