“==”对于Strings总是返回false

时间:2013-12-31 03:45:20

标签: android string compare

我似乎无法在第二个if语句中获取代码来执行。我记录了两个被比较的值,并运行调试器并检查它们。他们都是“一个”。它始终显示错误的密码对话框。这个问题似乎很难,因为它似乎应该只是工作,但任何帮助都是值得赞赏的。

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();
            }
        }

6 个答案:

答案 0 :(得分:1)

您正在比较对象标识。使用string.equals()检查等效性。

if(userPassword.equals(formPassword)){
}

答案 1 :(得分:0)

更改

if ( userPassword == formPassword ){

if ( userPassword.equals(formPassword) ){

==比较对象引用,而.equals则比较String

答案 2 :(得分:0)

您无法使用==比较字符串 试试这个

将指定对象与此字符串进行比较,如果它们相等则返回true。该对象必须是具有相同顺序的相同字符的字符串实例。

 if ( userPassword.equals(formPassword)){
    // do some stuff
  }

将指定的字符串与此字符串进行比较,忽略字符的大小写,如果它们相等则返回true。

 if(userPassword.equalsIgnoreCase(formPassword))
 {
     //do some stuff
  }

答案 3 :(得分:0)

JAVA中比较字符串,您应该使用:

if(userPassword.equals(formPassword)) {
   // they are equal
}

答案 4 :(得分:0)

更改

if ( userPassword == formPassword ){

if ( userPassword.equals(formPassword)){

在Java中,String.equals()进行了比较。使用==比较对象引用而不是它们的值。

Java String comparison

答案 5 :(得分:0)

在JAVA中,您应该使用equals来判断不同String的值是否相等。 ==用于判断字符串的对象指针,因此它只会在你的情况下返回false。