我正在使用swing表来存储数据,在eclipse中开发一个计时器应用程序。 我遇到的主要问题是这个if语句保持返回true,即使这些变量中的值相同(如输出所示)。可能导致这种情况的原因是什么?
以下是我的代码片段:
String currentPID = lblCurrentPID.getText();
for (int i = 0; i < tableActive.getRowCount(); i++) {
String currentValue = (String) tableActive.getValueAt(i, 2);
System.out.println(i + ": Current Value: " + currentValue + " - Current PID: "+ currentPID);
if (currentPID != currentValue) {
System.out.println("The value and PID are not the same for some reason!");
}
else {
tableActive.setValueAt(ts1.getOverallTotalTime(), i, 3);
System.out.println(i + ": Row Was Changed!");
}
}
这是输出:
0:当前值:Test3 - 当前PID:Test3
由于某种原因,值和PID不一样!
1:当前值:12345 - 当前PID:Test3
由于某种原因,值和PID不一样!
2:当前值:54321 - 当前PID:Test3
由于某种原因,值和PID不一样!
答案 0 :(得分:4)
if (currentPID != currentValue){
应该是
if (!currentPID.equals(currentValue)){
使用equals()
检查字符串相等性。 ==
运算符仅检查两个ref varibales是否引用相同的String对象。
答案 1 :(得分:1)
当您进行String
(或)Object
比较时,最好使用equals()
if (!currentPID.equals(currentValue)){
答案 2 :(得分:1)
应为if (!currentPID.equals(currentValue))
答案 3 :(得分:1)
为了比较java中的字符串,请使用equals
而不是==
(或!=
),请参阅Java String.equals versus ==以获取所有正当理由。