以下是我的问题代码的要点:
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。
我不明白最近发生了什么。如果我需要,我可以忍受它,但我觉得我在这里缺少一些非常基本的东西。
感谢。
答案 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方法主要用于比较对象,在某些情况下它不能比较两个完全相同的字符串