我在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()
是适当的方式,==
仅用于测试目的。
有没有另一种方式告诉我,字符串真正包含什么或者是否有我不明白的错误?
答案 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"字符串。