【发布时间】:2012-12-24 03:47:47
【问题描述】:
可能重复:
String is not equal to string?
What makes reference comparison (==) work for some strings in Java?
有人可以按照java代码解释一下吗
String a = "1";
if(a == "1") {
//print compare 1 is true;
} else {
//print compare 1 is false;
}
if(a.equals("1")) {
//print compare 2 is true;
} else {
//print compare 2 is false;
}
结果像
compare 1 is false
compare 2 is true
我唯一的解释是它比较内存地址而不是值本身。但我不确定。可以请一些人把它点亮。在 .Net == 运算符被重载以比较字符串的内容。
【问题讨论】:
-
== is 在比较字符串时不起作用,即使它不会产生错误。这适用于 Java 中的任何 object。使用 .equals 会给你一个正确的结果。就这么简单。
-
我仍然说我们需要一个“这不是你在 Java 中比较字符串的方式”关闭选项。
-
我不明白否决票是关于什么的。
-
@Marlon - 研究工作,如果您将鼠标悬停在向下投票按钮上,您会看到这是点击它的第一个原因。这在 SO 上已经被回答了数百次,在互联网上已经被回答了数千次。
-
至少他没有真正尝试过这段代码,因为
if (a == "1")实际上会返回true,他会继续认为这就是你比较 Stings 的方式。
标签: java