Java if语句比较2个值

Mar*_*ker 1 java string

我有一个我无法理解的小问题,我正在构建一个处理java EG中的调用的Web服务器去使用/SendCommand.html然后Java将处理请求,我有一个使用post构建的登录系统,但由于某种原因我的登录检查不起作用,

private boolean checkLogin(String user, String pass){
    for(int i = 0; i < users.users.length; i++ ){
        String test = SHA1.toSHA1(pass);
        if(users.users[i][0] == user && users.users[i][1] == test ){
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我打破if语句以提供以下信息当我调试这个我得到的时候,

Name            | Type            | Value
users             Users             #163
  users           String[]          #165(length=1)
    [0]           String[]          #167
      [0]         String            "Admin"
      [1]         String            "d033e22ae348aeb5660fc2140aec35850c4da997"
user              String            "Admin"
pass              String            "admin"
test              String            "d033e22ae348aeb5660fc2140aec35850c4da997"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的users.users[0][0] == user,users.users[0][1] == test为什么它从方法返回false?

NPE*_*NPE 6

不要==用来比较字符串.请s1.equals(s2)改用.前者比较了引用,这几乎总是不是你想要的.另一方面,后者比较字符序列.