Java 当我应该得到真值时得到一个假布尔值

Java 当我应该得到真值时得到一个假布尔值,java,android,android-studio,Java,Android,Android Studio,作为一个条件,我将两个变量字符串a和字符串b相等。它们完全相同,事实上我将值打印到logcat,它们是相同的字符串,没有额外的空格。但每当我把它们相等(a==b)时,我就会得到错误的结果。我甚至用打印机打印出了值 Log.v("BOOLEAN", Boolean.toString(a == b)); 我得到了虚假的回复。虽然当我打印出夹在字母I之间的值(以确保末尾没有空格将字符串弄乱)时,我得到了 这是相关代码 user_pin = USER_PIN.getText().toString();

作为一个条件,我将两个变量字符串a和字符串b相等。它们完全相同,事实上我将值打印到logcat,它们是相同的字符串,没有额外的空格。但每当我把它们相等(a==b)时,我就会得到错误的结果。我甚至用打印机打印出了值

Log.v("BOOLEAN", Boolean.toString(a == b));
我得到了虚假的回复。虽然当我打印出夹在字母I之间的值(以确保末尾没有空格将字符串弄乱)时,我得到了

这是相关代码

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) {...}
有人知道这是什么原因吗?

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

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) {...}