让我们考虑以下代码:
@Override
public boolean equals(Object obj) {
return (obj!=null && (obj instanceof User) && this.userId==((User) obj).userId
&& (String.copyValueOf(this.passWort)==String.copyValueOf(((User) obj).passWort)));
}
//在Main中:
User b=new User("Bob",new char[] {'a','b','c'});
User b1=new User("Bob",new char[] {'a','b','c'});
System.out.println(b.equals(b1));
//输出:false
但是当我删除时:
(String.copyValueOf(this.passWort)==String.copyValueOf(((User) obj).passWort))
从方法,然后方法返回true。
这个(String.copyValueOf(this.passWort)==String.copyValueOf(((User) obj).passWort))
为什么不返回true
?
编辑:好,所以问题是由于不使用.equals()
比较字符串而引起的,为什么此行this.userId==((User) obj).userId
返回true
也是字符串