【发布时间】:2013-08-01 20:48:06
【问题描述】:
我正在使用 JDK 1.4 和 1.5 运行此代码并得到不同的结果。为什么会这样?
String str = "";
int test = 3;
str = String.valueOf(test);
System.out.println("str[" + str + "]\nequals result[" + (str == "3") + "]");
if (str == "3") {
System.out.println("if");
} else {
System.out.println("else");
}
输出:
-
在 jdk 1.4 上
str[3] equals result[true] if -
在 jdk 1.5 上
str[3] equals result[false] else
【问题讨论】:
-
使用
"3".equals(str)而非==运算符检查字符串相等性。 -
这与JDK之间的差异无关,而是您对
String比较如何在Java中工作的理解。查看我之前评论中提供的链接 -
要比较java中的对象相等性,你必须使用
equals,如果它们引用的是同一个对象,则使用==...如果它们被实习,那么你就明白了。 -
@NarendraPathai 我认为问题是为什么 jdk 1.4 和 1.5 的输出不同。
-
@assylias 这与 1.4 和 1.5 中不同的字符串行为有关。你有什么想法?