2011-10-01 320 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()方法确实是比较对象的正确方法。