与字符串比较字符串值
问题描述:
我有一个字符串名为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语句我不这样做的权利。
答
比较字符串时,千万不要用==
,使用equals
。所以,相反的
DomainType == "org"
使用
DomainType.equals("org")
为什么? ==
将比较参考。这意味着:记忆值。他们可能并不适合你的弦乐。 equals
将比较值,这就是你想要的。
由于Java设计者决定以这种方式决定使用==,所以我不知道会浪费多少数百万小时......我们可能会看到相同的问题永远弹出......叹息 – JRL
是的,真的是一个恼人的限制。呵呵 – Voo
为什么“==”运算符对'String'的工作方式与其他任何对象不同?那将是愚蠢的......比看起来与算术加法运算符相同的字符串连接运算符更加愚蠢。 – erickson