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对象.除非字符串是实习的,否则这不起作用.
Boolean equal = temp.equals(answers[i]);
Run Code Online (Sandbox Code Playgroud)
您正在进行参考比较,而不是值比较。当您使用 == 运算符时,它会检查引用是否相等,而它们不相等。如果要检查值是否相等,请使用equals方法。
boolean equal = temp.equals(answers[i]);
Run Code Online (Sandbox Code Playgroud)