相同的字符串比较给我错误

时间:2010-10-06 15:55:35

标签: java arrays string comparison

我有两个相同的字符串,一个在数组中,另一个在String变量中。当我比较这些IDENTICAL字符串时,我每次都会得到错误。我已经调试和调试,但每次都得到相同的结果。这是有问题的代码

String temp = ""+(num1*num2);
Boolean equal = temp == answers[i];

if(equal) {
    correct[i] = true;
    num_correct ++;
}else{
    correct[i] = false;
}

同样,我调试了这个程序的每个细节,我101%确定字符串是IDENTICAL。为什么Java在比较时返回false?

5 个答案:

答案 0 :(得分:14)

当您在Java中使用==运算符时,您正在尝试比较对象引用。也就是说,此对象句柄是否指向与其他对象句柄相同的EXACT对象。除非字符串被实习,否则这将不起作用。

改为使用String.equals(Object)

Boolean equal = temp.equals(answers[i]);

答案 1 :(得分:4)

您正在进行参考比较,而不是值比较。当你使用==运算符检查引用是否相等时,它们不是。如果要检查值是否相等,请使用equals方法。

boolean equal = temp.equals(answers[i]);

答案 2 :(得分:1)

==在java中对字符串进行比较,看它们是否是同一个对象,而不是相同的字符串值。您应该使用.equals代替它来比较值。 ==有时可以工作,因为字符串可以被实现并通过引用引用相同的对象,即使是通过相同的文字单独创建(所以字符串b =“嘿”和字符串c =“嘿”最终成为背景中的同一个对象因为“嘿”被固定到一个隐藏的字符串对象。)

答案 3 :(得分:-1)

正如其他人所示,您应该使用equals

但我也会使用布尔对象的booleanValue

这是您正确完成的代码

String temp = ""+(num1*num2);
Boolean equal = temp.equals(answers[i]);

if(equal.booleanValue()) {
    correct[i] = true;
    num_correct ++;
}else{
    correct[i] = false;
}

答案 4 :(得分:-5)

这有帮助吗?

Boolean equal = (temp == answers[i]);

我不确定这是一个问题,但我总是把我的条件括在括号中。