【问题标题】:Why is my if condition comparing strings failing?为什么我的 if 条件比较字符串失败?
【发布时间】:2012-03-12 11:21:42
【问题描述】:

此程序执行未进入 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");
            }
        }
    }

【问题讨论】:

    标签: java string if-statement


    【解决方案1】:

    简答:
    argu1.equals(argu2) 而不是 argu1 == argu2


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

    你想做字符串比较,使用:

    if (argu1.equals(argu2))
    


    在某些情况下,== 运算符可能会进行相等性检查,例如:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            使用equals

            argu1.equals(argu2)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-04-04
              • 1970-01-01
              • 1970-01-01
              • 2017-09-25
              • 1970-01-01
              • 2010-10-22
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多