String对象的创建

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个对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值