-1

我正在测试 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 + "-");

这导致-失败-

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

4

3 回答 3

5

采用

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

比较字符串。

于 2013-04-09T20:37:34.603 回答
5

使用等于.equals而不是==。这是因为在 Java 中,如果您使用==对象指针相互比较。在他们的源代码中,String他们重写了该equals方法,因此他们改为比较字母。

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

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

于 2013-04-09T20:38:49.590 回答
-2

正如其他人指出的那样,在 Java == 中表示“完全相同的对象”,而不是“相同的对象”。例如,您可以有两个相同的 SimpleDateFormat 对象,但如果它们在堆上占据不同的位置,它们就不是同一个对象。仅供参考,C# 的行为方式非常相似,但在大多数情况下设法对程序员隐藏它。

顺便说一句,既然您已经在编写 Java 代码,那么您知道,稍微学习一下该语言可能是个好主意。以后省去一大堆问题。对于尝试用 Java 编写 C# 的人(如非静态内部类),还有许多其他惊喜等待着人们。

于 2013-04-09T20:44:01.360 回答