如果阻止无法识别字符串

时间:2013-11-22 09:09:40

标签: java if-statement

for (int i = 0; i< expArray.length; i++){
            System.out.println(expArray[i]);
            if ( expArray[i] == "5" ){  ///WHY IS THIS NOT WORKING!!!??             
                System.out.println("here");

我知道System.out...的输出:

0
=
0
+
5

这就是我的String数组的制作方式:

    for (int i = 0; i< expArray.length; i++){
        if(varTable.get(expArray[i]) != null){
            expArray[i] =  Integer.toString((int) varTable.get(expArray[i]));
        }
    }

所以问题是,在expArray[i] == "5" ) if block up top它不在i=1所在的位置。任何理由/想法?

5 个答案:

答案 0 :(得分:5)

如果您有常量

,请使用nullsafe检查
if("5".equals(expArray[i]))

答案 1 :(得分:4)

Use .equals() instead of == for String comparison!

==比较两个引用是否指向同一个对象,而不是你的情况。 .equals()检查实际的String内容。

有关字符串比较的详细说明,请查看此SO answer

答案 2 :(得分:3)

应使用equals代替==

if(expArray[i].equals("5"))

答案 3 :(得分:2)

==不适合比较字符串(任何对象,除非你知道它们是规范的)。 ==只是比较对象引用。 .equals()测试相等性。对于Strings,它们通常都是相同的,但是你发现它们并不能保证。

在Java中,新手遇到的最常见错误之一是使用==来比较字符串。您必须记住,==比较对象引用,而不是内容。

所以,使用if(expArray[i].equals("5")

答案 4 :(得分:1)

DO NOT COMPARE String使用==