为什么extra.getString()==“edit”不起作用,但extra.getInt()== 1工作?

时间:2012-02-09 04:21:46

标签: android bundle extra getstring

以下是我的问题代码的要点:

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 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

使用equals方法:

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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