java 中string 内存分析_Java StringBuilder和String的内存分析的问题

代码如下:publicclassstringBuilderDemo{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubStringBuildersb1=newStringBuilder("AAA");StringBuildersb2=newStrin...

代码如下:

public class stringBuilderDemo {

public static void main(String[] args) {

// TODO Auto-generated method stub

StringBuilder sb1 = new StringBuilder("AAA");

StringBuilder sb2 = new StringBuilder("AAA");

String s1 = "111";

String s2 = "111";

System.out.println("---------------------------------");

System.out.println(sb1 + " " + sb2 + " " + s1 + " " + s2);

System.out.println("---------------------------------");

replace(sb1, sb2, s1, s2);

System.out.println("---------------------------------");

System.out.println(sb1 + " " + sb2 + " " + s1 + " " + s2);

}

public static void replace(StringBuilder sb1, StringBuilder sb2, String s1,

String s2) {

sb1 = new StringBuilder("BBB");

sb2.append("CCC");

s1 = new String("222");

s2.concat("333");

System.out.println(sb1 + " " + sb2 + " " + s1 + " " + s2);

}

}

我的问题是:

s2在replace方法中有这么一个操作s2.concat("333");,因此,在常量池中多了个"111333"的数据,但是这个数据没人接收,s2还是指向常量池中的数据“111”;这个我能理解

但sb2,在replace方法中有追加的操作sb2.append("CCC");追加后在常量池中应该也多了个“AAACCC”的数据,但是为什么sb2就指向了"AAACCC",而不是像s2一样,新生成的“AAACCC”无人接收呢?

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值