为什么这个表达式返回true

时间:2011-06-12 04:30:19

标签: java string expression

(pass[i]!= null) && (pass[i].getName()!= "nullnull")< - 当我调试它时返回true,即使我在调试时使用eclipse中的Expressions窗口检查它时pass[i].getName() == "nullnull"的值

使用输入对话框输入两个名称

String firstName = (String)JOptionPane.showInputDialog("Enter First Name");
String lastName = (String)JOptionPane.showInputDialog("Enter Last Name");

并返回

public String getName()
    {
        return FirstName + LastName;
    }

5 个答案:

答案 0 :(得分:5)

您有两个具有相同值的不同字符串,但您可以通过引用对它们进行比较。

您需要通过撰写"nullnull".equals(pass[i].getName())来比较它们 即使getName()返回null,反转顺序仍然有效。

答案 1 :(得分:4)

尝试使用“.equals”

(pass[i]!= null) && !(pass[i].getName().equals("nullnull"))

答案 2 :(得分:2)

我认为你需要

    (pass[i]!= null) && (!pass[i].getName().equals("nullnull"))

答案 3 :(得分:1)

不应将字符串与==!=进行比较。 使用String.equals()

==将返回true,!=仅在两个字符串都是相同的字符串对象时才返回false(与比较它们所代表的文本不同)。

答案 4 :(得分:0)

说实话,它几乎总是如此:

在java中==运算符比较器对象引用。你想要.equals()方法。

您的代码存在差距 - 如果getName()返回null,它将会爆炸。