-5

我尝试使用 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

4

1 回答 1

1

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

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

于 2013-07-13T19:22:26.623 回答