以下代码段一共产生几个对象:
String a=“a”;
for (int i=0;i<3;i++){
a+=i;
}
此处产生4个对象
内存图如下:引用类型a的内存地址随着需要引用的对象的内存地址的不断变化而变化
String b=new String("b");
for (int i=0;i<3;i++){
b+=i;
}
此处产生5个对象
内存图如下:引用类型b的内存地址随着需要引用的对象的内存地址的不断变化而变化
此处产生对象过多,
所以此处可以将String 对象转换为StringBuilder
StringBuilder b=new StringBuilder("b"); for (int i=0;i<3;i++){ b.append(i); }
此处产生对象为2个
若append后数组长度超过16,则StringBuilder自动扩充为(n*2+2),返回其新数组,以实现其扩容
此处内存图如下: