2014-01-29 55 views
0

我抓住當前win7的用戶名是rsmith但我的if語句如下顯示: 0000 rsmith 2222 rsmith爲什麼不if語句工作正常

爲什麼我如果==線作爲工作預期?用戶名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"); 
     } 

回答

2

您不應該將字符串與==進行比較。您應該使用equals()方法。

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

有關更詳細的解釋,請參閱this excellent answer

1

==運算符比較兩個對象引用是否引用內存中的同一對象(引用相等),而不是它們是否相等。字符串類的執行equals()比較兩個String對象是否具有相同的字符(值相等)。

因此,這將是:

if (userName.equals("rsmith") { 
    .... 
} 
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"); 
     } 
0

==

2個比較對象,以檢查它們是否指相同的地方在存儲器

.equals()

對象的值進行比較。你需要使用.equals來比較