“==”操作符,是比较变量的值是否相等(内存地址也要相等),不涉及对象内容的比较;
equals方法,是比较对象的内容是否相等(不涉及内存地址的比较,如果是自己创建的类就必须重写equals方法,创造者来决定equals的判断标准)。
例如:String s1 = new String(“foo”);
String s2 = new String(“foo”);
那么s1 == s2为false,s1.equals(s2)为true。
下面是一个equals重写的基本步骤:
@Override
public boolean equals(Object obj){
if(obj == null)
return false;
if(this == obj)
return true;
if(obj instanceof User){
User other = (User)obj;
return this.id == other.id;
}
return false;
}
@Override
public int hashCode(){
return id<<7;
}
本文详细阐述了Java中对象比较的两种方式:使用==进行内存地址比较与equals方法进行内容比较。通过实例演示如何正确重写equals方法,并解释了重写该方法的重要性。

被折叠的 条评论
为什么被折叠?



