字符串对象的创建
public class Test { public static void main(String[] args) { Test t = new Test(); t.a(); } public void a(){ String str1 = new String("a"); String str2 = "a"; String str3 = new String("a"); } }
上述对象创建如图
1.执行第一行代码,在 new String("a");时,会先去常量池中查找有没有字符串a。如果没有,就会在常量池中创建一个字符串对象a,然后在堆中创建String对象a,str1指向String对象a。
2.执行第二行代码,str2同样会去查找常量池,找到,赋值。
3.执行第三行代码,先查找常量池有没有字符串a,找到,不用再创建。new String(a),并指向String对象a。