Java 当我应该得到真值时得到一个假布尔值
作为一个条件,我将两个变量字符串a和字符串b相等。它们完全相同,事实上我将值打印到logcat,它们是相同的字符串,没有额外的空格。但每当我把它们相等(a==b)时,我就会得到错误的结果。我甚至用打印机打印出了值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();
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) {...}