我有一个我无法理解的小问题,我正在构建一个处理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] == user
和users.users[0][1] == test
为什么它会从方法返回false?
答案 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()
进行比较