为什么该方法返回false

时间:2019-11-30 22:03:30

标签: java

让我们考虑以下代码:

@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也是字符串

0 个答案:

没有答案