【问题标题】:Why doesn't extra.getString() == "edit" work, but extra.getInt() == 1 work?为什么 extra.getString() == "edit" 不起作用,但 extra.getInt() == 1 起作用?
【发布时间】:2012-02-09 04:21:45
【问题描述】:

这是我的问题代码的要点:

String from = extra.getString("from");
Log.d("Cat", from);  //debugs as edit
if(from == "edit") {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}

它会转到“未编辑”

在我的调用活动中

cIntent.putExtra("from", "edit");
startActivity(cIntent);

如果我将所有这些更改为 getInt 并传递 1,它将调试为 Edit,如果传递 2,则调试为 Not Edit。

我不明白发生了什么。如果需要,我可以忍受它,但我觉得我在这里缺少一些非常基本的东西。

谢谢。

【问题讨论】:

    标签: android bundle extra getstring


    【解决方案1】:

    使用equals 方法:

    if(from.equals("edit")) {
      Log.d("Cat", "Edit");
    } else {
      Log.d("Cat", "Not Edit");
    }
    

    【讨论】:

    • 我已经很久没有学习任何Java课程了。 equals 短暂地闪过我的脑海,但随后消失了。谢谢你的例子。
    【解决方案2】:

    在Java中你需要按如下方式比较字符串,

    if(from.equal ( "edit") ) 
    {
      Log.d("Cat", "Edit");
    } 
    else 
    {
      Log.d("Cat", "Not Edit");
    }
    

    "==" 用于比较对象,而不是值。

    【讨论】:

      【解决方案3】:

      在 Java 中,当您使用 == 进行比较时,它会比较对象之间的引用 ID(指针)。 对于像 int 这样的数字对象,它的值就是它的 id。 但是,对于 String,两个相同的字符串可能具有不同的 ID。所以当你使用 == 比较它们时,它会返回 false,因为它是不同的对象。

      如果您使用 firstString.equal(secondString) 的排序,它将获取该字符串的值并使用它进行比较。

      希望这能回答您的问题,长话短说永远不要使用 == 比较字符串。

      【讨论】:

        【解决方案4】:

        比较字符串时应该使用str.equalsIgnoreCase(String s),因为equals方法主要用于比较对象,在某些情况下它无法比较两个完全相同的字符串

        【讨论】:

          猜你喜欢
          • 2018-10-27
          • 2014-01-26
          • 2013-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-05
          相关资源
          最近更新 更多