2012-02-09 80 views
0

这里是我的问题的代码要点:为什么不extra.getString()==“编辑”工作,但extra.getInt()== 1工作?

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。

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

谢谢。

回答

1

使用equals方法:

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

这是这么久以来我已经采取任何Java类。等于简单地跨过了我的脑海,但后来消失了。感谢这个例子。 – spuppett 2012-02-09 04:37:57

+0

来自C#背景,我刚刚在我的桌面上敲了一下我的头,而不是3个小时前,在滥用我的机器人的同时,在这个问题上。 – 2012-02-09 04:59:03

+0

仅供参考:使用https://github.com/beplaya/Wagon为您的演员。方式更容易。 – beplaya 2014-03-18 19:46:07

2

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

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

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

0

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

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

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

0

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

相关问题