java中对象的比较

比较两个对象是否相等,需要依次比较两个对象中的每一个属性的内容,我们可以采用下面的两种实现形式:

第一种形式。

package com.test8;

public class Test1 {

	public static void main(String[] args) {
		Person per1=new Person("吴邪", 28);
		Person per2=new Person("三叔", 40);
		if(per1.getName().equals(per2.getName())&&per1.getAge()==per2.getAge()){
			System.out.println("是同一个对象");
		}else{
			System.out.println("不是同一个对象");
		}

	}

}
class Person{
	private String name;
	private int age;
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}
上述程序虽说达到了我们的目的,但是代码进行比较的过程中采用了客户端(第三方,主方法或者说主类可以理解为客户端)来完成判断,是不合适的,因为这种比较应该是每一个对象具备的功能,应该由本类完成。

下面我们就按照这样的思路完成第二种样式的代码

package com.test8;

public class SecondIdea {

	public static void main(String[] args) {
		Sheep per1=new Sheep("多利", 8);
		Sheep per2=new Sheep("多利", 8);
		if(per1.compare(per2)){
			System.out.println("是同一个对象");
		}else{
			System.out.println("不是同一个对象");
		}

	}

}
class Sheep {
	private String name;
	private int age;
	public Sheep(String name,int age){
		this.age=age;
		this.name=name;	
	}
	//在Person对象中创建一个类
	//一个类可以接受本类引用,接收完成后可以直接调用本类中的私有操作(注意“引用”这个词)
	public boolean compare(Sheep per){//定义了compare()方法,功能是进行比较,
	if(per==null){
		return false;
	}
	if(this==per){    //地址相同
		return true;
	}
	//在conpare()方法中有两个对象:传入的Person,另外一个是this
	if(this.name.equals(per.name)&&this.age==per.age){
		return true;
	}
		
		return false;
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值