Integer.toString()add" \ u0000"字符,如果语句失败......

时间:2015-12-30 17:37:24

标签: java android string integer

好的,我在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"的值。令我惊讶的是,这就是我发现的:

SampleCode1

好的,我认为首先是:" Integer.toString()"做错了。

让我们尝试另一种方式:" String.valueOf()"

以调试模式运行,并且: SampleCode2

同样的!然而,当然没有。

显然失败是因为它比较了不同的角色,在互联网上我找到了解决它的方法,

string.replace ("\\ u0000", "");

但我的问题不是如何修复它,是:

为什么会这样?

是否有正确的方法来防止这种情况发生?

非常感谢大家, 此致,尼古拉斯

1 个答案:

答案 0 :(得分:0)

您正在进行参考比较。要比较字符串,您需要调用equals。通过使用Object执行==,您要求Java确保它们是同一个对象,而不是它们具有相同的值。

变化:

if(aNumberInString == "200"){

对此:

if(aNumberInString.equals("200") {

或者更好的是,减少NullPointerExcpetion的可能性:

if("200".equals(aNumberInString))