【问题标题】:I'm not getting something. String == String False [duplicate]我没有得到任何东西。字符串 == 字符串错误 [重复]
【发布时间】:2013-06-18 10:39:40
【问题描述】:

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

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

从类中获取布尔方法。

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

【问题讨论】:

  • 使用==比较字符串值不行,使用equals()方法。
  • 尝试先搜索您的问题,然后再提问:)

标签: android if-statement equals-operator


【解决方案1】:

因为 String a 和 String b 对象不同(== 测试引用相等)。你应该通过equals比较字符串实例@

if (a.equals(b)) {}

【讨论】:

  • 奇怪。实际上那不是address。这是因为ab 都是不同的对象。
  • 这就是我的意思。你的定义更清楚了,谢谢@PankajKumar
  • Java 中没有地址的概念。顺便说一句,最受欢迎
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    尝试以下之一

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2021-10-10
      • 2015-10-03
      • 2020-04-20
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多