字符串对象的创建

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。

原文地址:https://www.cnblogs.com/jinzhiming/p/9039508.html