2013-06-18 71 views
-4

这是为什么是假?我无法得到它。 DataBaseHelper.getBoolean();是一个字符串值。在这个if语句中,它输出相同的结果,但它表示它不相等。我没有得到什么。 String == String False

  String a = DataBaseHelper.getBoolean(id); 
      String b = DataBaseHelper.getBoolean(id); 
      if (a==b){ 
       newTextView.setText(DataBaseHelper.getBoolean(id) + " == " + DataBaseHelper.getBoolean(id) + " is TRUE \n"); 
      } else { 
       newTextView.setText(DataBaseHelper.getBoolean(id) + " == " + DataBaseHelper.getBoolean(id) + " is FALSE \n"); 
      } 

从toher类的getBoolean方法。

public String getBoolean(int randomIndex) { 
     // TODO Auto-generated method stub 
     open(); 
     Cursor c = myDataBase.query(TABLE_NAME1, columns, WHATTODONOW_COLUMN_ID 
       + "=" + randomIndex, null, null, null, null); 
     if (c != null) { 
      c.moveToFirst(); 
      String text = c.getString(8); 
      return text; 
     } 
     closee(); 
     return null; 
    } 
+1

使用'=='比较字符串值将不起作用,请使用equals()方法。 – Geros

+0

尝试先搜索你的问题,然后问:) –

回答

2

因为字符串a和字符串b对象是不同的(==测试引用相等)。你应该通过equals

if (a.equals(b)) {} 
+0

奇怪。其实这不是“地址”。这是因为'a'和'b'都是不同的客体。 –

+0

这就是我的意思。您的定义更清晰,谢谢@PankajKumar – Blackbelt

+0

没有Java地址的概念。 BTW最受欢迎 –

1

比较String对象应使用a.equals(b)a.equalsIgnoreCase(b),而不是==符来比较字符串。 ==运算符比较两个操作数的引用。您的ab是不同的字符串对象,因此它失败。

1

与一种尝试以下

如果(a.equals(B)){}

而且

如果(a.equalsIgnoreCase(B)){}

相关问题