Android &引用==&引用;对于总是返回false的字符串
我似乎无法在第二个if语句中执行代码。我已经记录了正在比较的两个值,还运行了调试器并检查了它们。他们都是“a”。它总是显示错误的密码对话框。这个问题似乎很难回答,因为它似乎应该起作用,但任何帮助都是值得感谢的Android &引用==&引用;对于总是返回false的字符串,android,string,compare,Android,String,Compare,我似乎无法在第二个if语句中执行代码。我已经记录了正在比较的两个值,还运行了调试器并检查了它们。他们都是“a”。它总是显示错误的密码对话框。这个问题似乎很难回答,因为它似乎应该起作用,但任何帮助都是值得感谢的 private void logUserIn(AppUser user) { if (user != null){ Log.d("mPassword: ", mPassword); Log.d("use
private void logUserIn(AppUser user) {
if (user != null){
Log.d("mPassword: ", mPassword);
Log.d("user.getPassword(): ", user.getPassword());
String userPassword = user.getPassword().toString();
String formPassword = mPassword.toString();
if ( userPassword == formPassword ){
Intent welcomePage = new Intent(this, StartScreenActivity.class);
welcomePage.putExtra("name", mName);
startActivity(welcomePage);
}
else {
showIncorrectPasswordDialog();
}
}else {
showIncorrectUserNameDialog();
}
}
您正在比较对象标识。使用
string.equals()
检查等效性
if(userPassword.equals(formPassword)){
}
改变
if ( userPassword == formPassword ){
到
=
比较对象引用,而.equals
比较字符串值。不能使用=
像这样试试
将指定的对象与此字符串进行比较,如果它们相等,则返回true。对象必须是具有相同顺序的相同字符的字符串实例
if ( userPassword.equals(formPassword)){
// do some stuff
}
或
将指定的字符串与此字符串进行比较,忽略字符的大小写,如果它们相等,则返回true
if(userPassword.equalsIgnoreCase(formPassword))
{
//do some stuff
}
在
JAVA
中,要比较字符串,应使用:
if(userPassword.equals(formPassword)) {
// they are equal
}
改变
到
在Java中,String
比较是通过.equals()
完成的。使用==
比较对象引用,而不是它们的值
在JAVA中,您应该使用equals来判断不同字符串的值是否相等。
==用于判断字符串的对象指针,因此在您的情况下它只会返回false。使用string.equals();或字符串。equalsIgnoreCase();这与Android无关,但是Google在Java引用类型上。。。
if(userPassword.equals(formPassword)) {
// they are equal
}
if ( userPassword == formPassword ){
if ( userPassword.equals(formPassword)){