【发布时间】:2015-12-30 17:37:24
【问题描述】:
好的,我在 stackOverflow 中的第一个问题。
这让我完全困惑。
Java(我用的是android Studio),我写了如下代码:
Integer aNumber = 200;
String aNumberInString;
aNumberInString = Integer.toString(aNumber);
Boolean result;
if(aNumberInString == "200"){
result = true;
} else {
result = false;
}
Log.i("result:",result+"");
好的,逻辑和我期望的是条件为真......但是不!它失败了。
我真的被这种行为震惊了,然后再调查一下,并在调试模式下逐步运行代码。
当我遇到这种情况时,我检查了“aNumberInString”的值,令我惊讶的是,这就是我发现的:
好的,所以我首先想到的是:“Integer.toString()”做错了什么。
让我们尝试另一种方式:“String.valueOf()”
一样!当然失败了。
显然失败了,因为它比较了不同的字符,在互联网上我找到了修复它的方法,
string.replace ("\\ u0000", "");
但我的问题不是如何解决,而是:
为什么会这样?
有没有防止这种情况发生的正确方法?
从已经非常感谢大家, 问候,尼古拉斯
【问题讨论】:
-
不要使用
==进行字符串比较,使用equals() -
请注意:您对调试显示的解释是错误的:
aNumberString包含偏移量 8 的字符“2”、“0”和“0”,即字段 @987654330 @ (8) 和count(3) 显示。
标签: java android string integer