1、String对象的创建
1.1字面量创建String对象
String s1 = "abc";//字符串常量池中添加"abc"对象,返回引用地址给s1对象
String s2 = "abc";//通过equals()方法判断常量池中已有值为abc的对象,返回相同的引用
System.out.println(s1==s2);//true 所以s1==s2
String s5 = "x"+"y";//经过JVM(Java虚拟机)优化,直接在常量池中添加"xy"对象
1.2new创建String对象
String s3 = new String("def");//在常量池中添加"def"对象,在堆中创建值为"def"的对象s3,返回指向堆中s3的引用
String s4 = new String("def");//常量池中已有值为"def"的对象,不做处理,在堆中创建值为"def"的对象并返回指向它的引用s4
String s6 = new String("1")+new String("1")+new String("2");//通过StringBuilder实现,在常量池中添加“1”和“2”两个对象,在堆中创建值为“112”的对象,把引用地址给s6
对应的图示: