1

我有一个我无法理解的小问题,我正在构建一个 Web 服务器来处理 java EG 中的调用 go to use /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?

4

3 回答 3

6

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

于 2013-03-24T16:15:07.383 回答
0

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

于 2013-03-24T16:15:01.773 回答
0
if(users.users[i][0].equals(user) && users.users[i][1].equals(test))

始终将 String 与 .equals() 进行比较

于 2013-03-24T16:15:11.570 回答