当我应该成为真实时获得错误的布尔值

时间:2015-06-11 02:50:20

标签: java android android-studio

作为条件,我将两个变量String a和String b等同起来。它们完全相同,实际上我将值打印到logcat并且它们是相同的字符串,没有多余的空格。但每当我将它们等同起来时(a == b),我就会得到回报。我甚至用

打印出了这个值
Log.v("BOOLEAN", Boolean.toString(a == b));

我回来了。虽然当我打印出夹在字母I之间的值时(为了确保最后没有空格弄乱字符串),我得到了

V/BOOLEAN: I123I123I

这是相关代码

user_pin = USER_PIN.getText().toString();

    DatabaseOperations DOP = new DatabaseOperations(ctx);
    DOP.open();
    Cursor CR = DOP.getRow(id);
    CR.moveToFirst();
    user_pin_database = CR.getString(3);

    Log.v("BOOLEAN", "I" + CR.getString(3) + "I" + user_pin + "I");

    if (user_pin == user_pin_database) {...}

有谁知道造成这种情况的原因?

1 个答案:

答案 0 :(得分:2)

(==)比较java中两个字符串对象的引用。你应该使用.equals()方法或.equalsIgnoreCase()来比较两个字符串的内容。