2011-10-01 235 views
1

可能重複:
Java String.equals versus ==與字符串比較字符串值

我有一個字符串名爲DomainType通常認爲像 「EDU,COM,org..etc」 值從URL 。我使用了一個if else語句來幫助檢查數據類型並輸出JOptionPane。出於某種原因,無論何時輸入任何域類型,它都會爲您提供最後一個選項。

下面是我寫的代碼片段:

DomainType = URL.substring(URLlength - 3, URLlength); 

if (DomainType == "gov") { 
    JOptionPane.showMessageDialog(null, "This is a Government web address."); 
} 
else if (DomainType == "edu") { 
    JOptionPane.showMessageDialog(null, "This is a University web address."); 
} 
else if (DomainType == "com") { 
    JOptionPane.showMessageDialog(null, "This is a Business web address."); 
} 
else if (DomainType == "org") { 
    JOptionPane.showMessageDialog(null, "This is a Organization web address"); 
} 
else { 
    JOptionPane.showMessageDialog(null, "This is an unknown web address type."); 
} 

所以DomainType給我EDU或COM沒有問題,但我認爲這是我的if語句我不這樣做的權利。

+5

由於Java設計者決定以這種方式決定使用==,所以我不知道會浪費多少數百萬小時......我們可能會看到相同的問題永遠彈出......嘆息 – JRL

+0

是的,真的是一個惱人的限制。呵呵 – Voo

+0

爲什麼「==」運算符對'String'的工作方式與其他任何對象不同?那將是愚蠢的......比看起來與算術加法運算符相同的字符串連接運算符更加愚蠢。 – erickson

回答

1

比較內容使用equals,不==(這比較引用):

if (DomainType.equals("gov")) { 
+0

對,比較對象引用時經常使用'=='。 – Vacker

4

比較字符串時,千萬不要用==,使用equals。所以,相反的

DomainType == "org" 

使用

DomainType.equals("org") 

爲什麼? ==將比較參考。這意味着:記憶值。他們可能並不適合你的絃樂。 equals將比較值,這就是你想要的。

0

在旁註中,巨型if可能不是最優雅的方式 - http://www.antiifcampaign.com/ - 抱歉,只是迂腐。

.equals()方法確實是比較對象的正確方法。