java中的字符串比较不匹配

时间:2014-10-06 17:57:20

标签: java android string-comparison

我在java项目中有一个长度为1的字符串response_content,我知道它等于1(ASCII 49)。我知道这一点,因为以下几行(在Eclipse中使用android ADT + SDK)

Log.i("GET RESPONSE", response_content);
Log.i("GET RESPONSE", response_content.length());
Log.i("GET RESPONSE", response_content.codePointAt(0));

产生这个输出:

1
1
49

但为什么这些行总是返回false?

if (response_content.equals(1)) {...}
if (response_content == "1") {...}

我知道equals()是适当的方式,==仅用于测试目的。 有没有另一种方式告诉我,字符串真正包含什么或者是否有我不明白的错误?

2 个答案:

答案 0 :(得分:4)

第一个

if (response_content.equals(1)) {...}

将String对象与Integer对象进行比较......它们在object-type上不匹配,因此计算false。第二个

if (response_content == "1") {...}

正在比较引用,而不是数据本身......'response_content'是一个单独的对象,因此评估为false。

请改为尝试:

if (response_content.equals("1")) {...}

答案 1 :(得分:0)

必须为response_content.equals("1")否则将String对象与Integer对象进行比较

response_content == "1"可能会返回true,但不是必须的,因为那些可以是不同的" 1"字符串。