0

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

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。

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

谢谢。

4

4 回答 4

1

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

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

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

于 2012-02-09T04:24:48.467 回答
1

使用equals方法:

if(from.equals("edit")) {
  Log.d("Cat", "Edit");
} else {
  Log.d("Cat", "Not Edit");
}
于 2012-02-09T04:25:27.483 回答
0

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

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

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

于 2012-02-09T04:31:52.940 回答
0

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

于 2012-02-09T10:03:24.630 回答