我正在抓取当前的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");
}
答案 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进行比较