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

Hub*_*bro 7 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;
}
Run Code Online (Sandbox Code Playgroud)

我再次调试了这个程序的每个细节,我确信这些字符串是IDENTICAL.为什么Java在比较时返回false?

jdm*_*hal 14

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

改为使用String.equals(Object):

Boolean equal = temp.equals(answers[i]);
Run Code Online (Sandbox Code Playgroud)


Cor*_*old 5

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

boolean equal = temp.equals(answers[i]);
Run Code Online (Sandbox Code Playgroud)