我正在测试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,但我不能用它来检查。
答案 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#的人(如非静态内部类),还有很多其他的惊喜。