为什么不是if语句正常工作

时间:2014-01-29 20:03:16

标签: java

我正在抓取当前的win7用户名,即rsmith但我的if语句显示如下: 0000史密斯 2222 rsmith

为什么我的if ==行没有按预期工作? userName IS rsmith

        String userName = System.getProperty("user.name");
        System.out.println("0000 " + userName + "\n");
        if (userName == "rsmith"){
            System.out.println("1111 " + userName + "\n");
        }
        else {
            System.out.println("2222 " + userName + "\n");
        }

4 个答案:

答案 0 :(得分:2)

您不应将字符串与==进行比较。您应该使用equals()方法。

 if (userName.equals("rsmith"){
   ..
 }

有关更详细的说明,请参阅this excellent answer

答案 1 :(得分:1)

==运算符比较两个对象引用是否引用内存中的同一对象(引用相等),而不是它们是否相等。 String类的equals()实现比较两个String对象是否具有相同的字符(值相等)。

因此,它将是:

if (userName.equals("rsmith") {
    ....
}

答案 2 :(得分:0)

==测试参考相等性。

.equals()测试价值平等。

因此,如果您确实想测试两个字符串是否具有相同的值,则应使用.equals()

==用于测试两个字符串是否是同一个对象。

        String userName = System.getProperty("user.name");
        System.out.println("0000 " + userName + "\n");
        if (userName.equals("rsmith")){
            System.out.println("1111 " + userName + "\n");
        }
        else {
            System.out.println("2222 " + userName + "\n");
        }

答案 3 :(得分:0)

==

比较2个对象以检查它们是否引用内存中的相同位置

.equals()

比较对象的值。

在您的情况下,您需要使用.equals进行比较