class Test {
public static void main(String...args) {
String s1 = "Good";
s1 = s1 + "morning";
System.out.println(s1.intern());
String s2 = "Goodmorning";
if (s1 == s2) {
System.out.println("both are equal");
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在Java 6和Java 7中生成不同的输出.在Java 6中,s1==s2条件返回false并在Java 7中s1==s2返回true.为什么?
为什么这个程序在Java 6和Java 7中产生不同的输出?
在这个博客上,我发现了有趣的字符串拼图:
---引用---
String te = "te", st = "st";
//"test".length();
String username = te + st;
username.intern();
System.out.println("String object the same is: "
+ (username == "test"));
Run Code Online (Sandbox Code Playgroud)
在Java 7更新7下打印.
String object the same is: true
但取消注释"test".length(); 行,或使用Java 6运行并打印
String object the same is: false
--- EoQ ---
说实话我不明白为什么输出不同.能否请您解释一下这种行为的原因是什么?