- public class StringDemo {
- public static void main(String[] args) {
- /*String s3 = "abc";
- String s4 = new String("abc");
- System.out.println(s3==s4);//false
-
- * s3创建,在内存中只有一个对象,存在常量池中。
- * s4创建,在内存中有两个对象。先在堆中开辟一个空间,调用构造函数,调用了常量池中的"abc"对象。最后堆里有一个对象,常量池中有一个对象*/
-
- String s1 = new String("abc");
- String s2 = "abc";
- System.out.println(s1==s2);//false
- }
- }
复制代码
把String s1 = new String("abc");和String s2 = "abc";顺序倒过来,根据字符串可以共享,如果常量池中有"abc",s2就会直接使用。现在输出结果是false,说明s1的对象不在常量池中,在堆中。 |