为什么这个If语句返回True?

时间:2013-03-13 14:41:51

标签: java if-statement

我正在使用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不一样!

4 个答案:

答案 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 ==以获取所有正当理由。