Android:字符串等于且包含不匹配

时间:2013-04-09 20:35:37

标签: java android string

我正在测试Android应用程序的JSON功能,并拥有以下JSON对象。

{"result":"fail"}

然后我使用以下代码来获取我的值:

JSONObject jObject = new JSONObject(ReturnValue); //Return value is what's shown above
String r = jObject.getString("result");

然后使用以下内容我没有得到匹配

if(r.trim() == "fail")

我把它写到屏幕上只是为了确保这个:

et.setText("-" + r + "-");

导致-fail -

我不明白为什么这不匹配。如果我使用r.Contains它返回true,但我不能用它来检查。

3 个答案:

答案 0 :(得分:5)

使用

if(r.trim().equals("fail"))

比较字符串。

答案 1 :(得分:5)

使用等于.equals代替==。这是因为在Java中,如果使用==,则将Object指针相互比较。在String的源代码中,他们覆盖了equals方法,因此他们改为比较字母。

您不能在Java中覆盖运算符。

这也是一般的,如果您不想检查您正在比较的引用实际指向堆中的同一对象,则始终使用equals进行任何对象比较。

答案 2 :(得分:-2)

正如其他人所指出的,在Java ==中意味着“完全相同的对象”,而不是“相同的对象”。您可以拥有两个相同的SimpleDateFormat对象,但如果它们占用堆上的不同位置,则它们不是同一个对象。 fyi,C#表现得非常相似,但设法将其隐藏在程序员most of the time之外。

顺便说一句,既然你已经在编写Java代码了,那么对你来说,学习语言可能是个好主意。以后可以解决很多问题。对于尝试在Java中编写C#的人(如非静态内部类),还有很多其他的惊喜。