String s1 = "abc"; 和 String s2 = new String("abc); 的区别
s1 是放在字符串常量池中(缓冲区), s2 是存放在堆内存中的
如果再有一个 String s3 = "abc";
s3 和 s1 地址是相等的。 因为s1 中的内容是在字符串常量池里的, s3先在常量池里面找有没有定义的内容,如果有,s3也指向这个地址,
如果没有s3 再新建这些内容。
而 如果 String s4 = new String(abc");
s4 的地址和 s2 的地址是不一样的, 因为他们是在堆内存里面的两个对象,分别开辟一块内存。