JAVA中比较两个对象,其实就是判断两个对象的引用变量是否相等
1. ==运算符就是比较引用变量所指向的内存地址是否相同
2. equals(Object o)方法,也是按内存地址比较,但用户可以覆盖Object类的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
3. Java中的一些类覆盖了equals方法,以事项按对象值进行比较,这些类包括,String,Date,Byte,Integer,Short,Character,Long,Float,Double,Boolean
String s1=new String("hello");
String s2=new String("hello");
s1==s2//false,按地址进行比较
s1.equals(s2)//true, 已重写,按值进行比较
4. 重写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;
}