String对象的创建

来源:互联网 发布:沪深300指数月度数据 编辑:程序博客网 时间:2024/05/29 15:09

1.字面量创建

String str = "123";

创建了一个对象。

String s1 = "123";String s2 = "123";String s3 = "12" + "3";

总共创建了一个对象。字面量创建会先在字符串池中查看是否有通过String equals("123")方法返回true的对象,即值为"123"的对象。如果有则不会创建新的对象。

s1因为第一次创建,在字符串池中没有匹配的对象,故创建一个对象,然后s1变量引用指向该对象;s2因为字符串池中已有“123”对象,故而不创建对象,只是s2引用指向已创建的“123”对象;s3因为都是字面量,所以在编译期会优化,相当于"123",故而不创建新对象。

2.new 创建

String str = new String("123");

总共创建了两个对象。new创建符会强制在堆中创建一个新的对象,同时“123”会在字符串池中创建一个对象。故而创建了两个对象。

3.例子

String s2 = new String("123") + new String("123");

以上代码创建了4个对象。首先在字符串池中创建了值为“123”的对象,然后两个new String在堆中创建了两个新的对象,接着因为String为不变对象,所以两个new出来的String对象连接要创建一个新的对象实现String对象连接。故创建了4个对象。
0 0
原创粉丝点击