“==”操作符,是比较变量的值是否相等(内存地址也要相等),不涉及对象内容的比较;
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;
}