引用传递分析/对象比较

如果现在想要确认两个对象是否相等,那么应该比较的是对象的完整信息

而对象的完整信息就是对象的属性,所以所谓的对象比较指的就是两个对象的属性进行比较。

范例:对象比较的实现

(如果返回的是String的实例化对象就能继续调用String类的方法)

 

class Person{
	private String name;
	private int 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 Person(String name,int age) {
	this.name=name;
	this.age=age;
}
}
   
public class StringDemo {
 public static void main(String args[]) {
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("两个对象不等");
}
          }
}	

虽然这个时候已经实现了对象的比较,但是这种操作一定不可能在实际工作中出现,

因为客户端(主方法、调用处)需要涉及到的逻辑太多了 。

对于对象比较的操作应该是一个类本身所具备的功能,而不应该变为外部操作

范例:对象比较实现二

(现在假设对象比较的方法名称暂时为compare())

class Person{
	private String name;
	private int age;
public Person(String name,int age) {
	this.name=name;
	this.age=age;
}
//这个时候会有两个对象:this表示当前对象,另外一个是传入对象
public boolean compare (Person per) {
	if(per==this) //传入对象与当前对象的地址相同
		return true;
	if(per==null)//如果传空(null),this.name就无属性也就是没内容会报空指针异常
		return false;
//此时per对象已经在类的内部了,所以不受封装局限
//可以直接利用“对象.属性”进行访问(属于固定概念)
	if(this.name.equals(per.name)&&this.age==per.age)
{
	return true;
	}
return false;
}
}
   
public class TestDemo  {
 public static void main(String args[]) {
Person perA=new Person("张三",20);
Person perB=new Person("张三",20);
//需要根据对象所拥有的属性信息来进行完整比对
if(perA.compare(perB)) {
	System.out.println("两个对象相等!");
}else {
	System.out.println("两个对象不等!");
}
}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值