共享元数据,用一个池子装着已经生称号的对象,要用到这个对象的时候直接去池子里取

    1. public class TestString {
    2. public static void main(String[] args) {
    3. String s1 = "abc";
    4. String s2 = "abc";
    5. String s3 = new String("abc");
    6. String s4 = new String("abc");
    7. System.out.println(s1 == s2); //true
    8. System.out.println(s1 == s3); //false
    9. System.out.println(s3 == s4);//false
    10. System.out.println(s3.intern() == s1);//true
    11. System.out.println(s3.intern() == s4.intern());//true
    12. }
    13. }

    字符串是存在常量池里面的。
    s1,s2引用是一样的, 其它的引用不一样,String.intern()优先取的是常量池里面的引用,所以为true。