System.out.println如何(s1 == s3.intern()); //返回true?

时间:2013-07-13 19:17:33

标签: java string

我尝试用String进行所有操作。然后我得到了这个输出

public class Stringtest {

    public static void main(String[] args) {
        String s1="abc";
        String s2="abc";
        String s3=new String("abc");
        String s4=new String("abc");
        System.out.println(s1.equals(s2));
        System.out.println(s1==s2);
        System.out.println(s1==s3.intern());
        System.out.println(s3.equals(s4));
    } 
}

对于:

System.out.println(s1==s3.intern()); //return true

为什么结果会返回true

1 个答案:

答案 0 :(得分:1)

Interning使相同的不可变对象保持相同的引用以节省内存。当s3被实习时,它被设置为从池间指向s1(因为它是一个文字,它很容易被添加到那里)。

由于它们具有相同的引用,==返回true。