此程序执行未进入 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
,乍一看似乎是相等比较,但实际上是编译器优化,其中 var1
和 var2
共享相同的引用。
关于java - 为什么我的 if 条件比较字符串失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389587/