Java if语句比较2个值

时间:2013-03-24 16:13:45

标签: 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;
}

我正在打破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"

您可以看到users.users[0][0] == userusers.users[0][1] == test为什么它会从方法返回false?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

使用.equals()比较字符串,而不是==

答案 2 :(得分:0)

if(users.users[i][0].equals(user) && users.users[i][1].equals(test))

始终将String与.equals()

进行比较