java对象的比较分析

关于对象的比较我们可以通过以下三种手段来实现
一、利用"=="比较引用
Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返回false,而在对象的比较中,"=="运算符就是比较引用变量所指向的内存地址是否相同 ;
 
二、通过覆盖equals方法比较引用

User u1=new User("Tom");  
User u2=new User("Tom");  
User u3=u1;  
u3.setName("Jack");  
u1==u3//true  
u1.equals(u3)//true  
u1==u2//false;  
u1.equals(u2)//false  

三、重写equals()方法
在Java API中,有些类重写了equals()方法,这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等。

String s1=new String("hello");  
String s2=new String("hello");  
s1==s2//false,按地址进行比较  
s1.equals(s2)//true, 已重写,按值进行比较  

三、手动重写equals方法比较对象
在定义一个类的时候,如果涉及到对象的比较,应该重写equals()方法。
public boolean equals(Object o)  
{  
   //如果和自身比较,返回TRUE  
   if(this==o) return true;  
   //如果不是这个类的实例,返回FALSE  
   if(!o instanceof User) return false;  
     
   final User u=(User)o  
   if(this.getName().equals(u.getName())  
      return true;  
   else  
      return false;  
} 

最后给出一个标准的对象比较范例
package javacompareDemo;
//对象的比较
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;
	}
	//这里注意,比较操作是应该发生在person类内部函数上的
	public boolean compare(person per){               
		if(this==per)
			return true;
		if(this.name.equals(per.name)&&this.age==per.age)
			return true;
		else
			return false;	
	}
	
}
public class ClassCompare1 {

	public static void main(String[] args) {
	person per1 = new person("影流之主",19);
	person per2 = new person("放逐之刃",18);
	person per3 = new person("影流之主",19);
	System.out.println(per1.compare(per2));
	System.out.println(per1.compare(per3));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值