相关疑难解决方法(0)

intern()在Java 6和Java 7中表现不同

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中产生不同的输出?

java string string-interning java-6 java-7

54
推荐指数
6
解决办法
5661
查看次数

字符串实习生难题

可能重复:
intern()在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 ---

说实话我不明白为什么输出不同.能否请您解释一下这种行为的原因是什么?

java string

15
推荐指数
2
解决办法
816
查看次数

标签 统计

java ×2

string ×2

java-6 ×1

java-7 ×1

string-interning ×1