String str = new String("abc")的问题?

String str = new String("abc")
这样得方式创建了两个对象,一个是abc,一个是str,一般不建议这样创建
直接String str ="abc";就可以
另外楼主说错了,第一种方式创建的,也就是用new创建的,不会去字符串池中找看是否有相同的,
new创建的会在堆中重新开辟内存。
也就是说String str = new String("abc")
String str2 = new String("abc")
这样创建的str 和 str2 其实是两个对象
但是
String str ="abc"
String str2 ="abc"
这样创建的str == str2
当你创建str2得时候会在字符串池中找是否有"abc"存在,若存在则不会创建了,直接把str2这个引用指过去




不带参数是正常相当于调用了这个构造方法:
public String () {
value = new char[0];
offset = 0;
count = 0;
}
只创建了String对象
带参数相当于调用了这个构造方法:
public String (String string) {
value = string.value;
offset = string.offset;
count = string.count;
}
也就是有两个String对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值