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

标签 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");
            }
        }
    }

最佳答案

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


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

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

if (argu1.equals(argu2))


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

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

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

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

关于java - 为什么我的 if 条件比较字符串失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389587/

相关文章:

java - 如果我在 onBindViewHolder 中迭代 JsonArray 而不是 Arraylist,性能会有什么差异吗?

java - 无法从 JSP 访问 WEB-INF 下定义的 CSS 文件

java - 在 Dockerfile 中运行 Java 时区更新程序 JAR 时出现权限错误

java - Jersey JUnit 测试 : @WebListener ServletContextListener not invoked

r - 在 R 中提取一组短语后的单词/文本

甲骨文 : PLS-00103 occur on procedure with condition

c - C 中的速度胜过风格?

string - Typescript:获取未定义的值

java - NULL 数组 - 如何在 while 循环中链接它

vb.net - 简单如果检查多个值vb