java-String原理-创建对象的个数

Stirng创建对象的个数

 String str="a",和String str = new String("a");

  •  String str="a"创建了一个String对象,并放进了 String常量池中。因为String创建池不可能存在两个相同的字符串。所以如果在继续 String str1="a",将不会继续创建对象。
  • String str = new String("a")会创建两个对象,一个放在堆里(new出来了对象),一个放在String常量池中。同理,如果后面继续String str = new String("a"),只会创建一个对象,放在堆中的(new)。

带"+":

  • 字面值+字面值

当"+"两端均为编译期确定的字符串常量时,编译器会进行相应的优化,直接将两个字符串常量拼接好。所以只会创建一个"abcdef"对象

String s1 = "abc" + "def";//一个

  • 字面值+对象

”+“中有String对象的时候,所有没有在常量池中的字符串都会被创建一个对象

s1="abc";
String s2 ="abc"+s1+"def";
创建了三个对象,
s1="abc"一个
s2中:"abc"已经存在,不再创建,"def"一个,"abcdef"一个。
  • new String("xx") + new String("xx")

String s = new String("abc") + new String("abc");
四个
第一个new String("abc")创建了两个
第二个new String("abc")创建了一个(常量池中有"abc"不再创建)
new String("abc") + new String("abc")一个
String s = new String("abc") + new String("def");
五个
第一个new String("abc")创建了两个
第二个new String("def")创建了两个
new String("abc") + new String("def")一个

 

  • 字面量+new String("xx")

String s = "abc" + new String("def");
四个
"abc"一个
new String("def")两个
"abc" + new String("def")一个

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值