为什么我的if条件比较字符串失败?

时间:2012-02-22 05:34:43

标签: java string if-statement

此程序执行未进入if条件。
请查看我指定的评论。

public static void filterObject(ArrayList<treewalker.VariableNode> variableNodeslist,
            ArrayList<treewalker.ObjectNode> objectNodeslist,
            ArrayList<treewalker.ClassNode> classNodeslist) {
        int i, j;
        for (i = 0; i < variableNodeslist.size(); i++) {
            for (j = 0; j < classNodeslist.size(); j++) {
                String argu1 = variableNodeslist.get(i).typeClass.toString();
                String argu2 = classNodeslist.get(j).name.toString();
                System.out.println(argu1);
                System.out.println(argu2);
                if (argu1 == argu2)//this if loop is not getting executed 
                {
                    System.out.println("inside for");
                }
                System.out.println("hi");
            }
        }
    }

5 个答案:

答案 0 :(得分:3)

简答:
argu1.equals(argu2)代替argu1 == argu2


更长的回答:
Java中的==运算符执行引用比较。

您想要进行字符串比较,请使用:

if (argu1.equals(argu2))


在某些情况下,==运算符似乎可以执行相等检查,例如:

String var1 = "abc";
String var2 = "abc";

String result = ("abc" == "abc");

在这种情况下,结果是true,它看起来似乎是一个相等比较,但实际上是编译器优化,其中var1var2共享相同的引用。

答案 1 :(得分:1)

使用equals

argu1.equals(argu2)

答案 2 :(得分:1)

你应该做if(argu1.equals(argu2))进行字符串比较。 ==将比较哈希码。对于字符串,即使2个字符串包含相同的文本,它们的哈希码也可能不同。因此,您需要使用equals()来比较字符串文本

答案 3 :(得分:1)

使用String.equals()来比较您的字符串,而不是==

答案 4 :(得分:1)

使用if(argu1.equals(argu2))而不是if(argu1==argu2)

您绝不应该使用==来比较字符串。