//相同字符串内容不应该存储多次,Java这里对字符串类型进行了优化
//方法区组成部分:常量池(串池StringPool)
//字符串字面量 --->加入--->常量池(只会存储一次,不会创建多个对象)
//对于new String ,每次会分配新的内存,存储于堆中
//字符串字面量做加法 String a = "aaa" + "bbb";
// 在编译阶段成为(已经连接起来):aaabbb
//字符串变量加法:
//|-----StringBuffer 字符串的创建器
// |-----与String区别:
// |---String类型一旦创建就不能改动
// |---" aaabbb "=>旧的内容没有变,新生成的
// |---StringBuffer 字符串可以随便改动
//变量相加的底层实现原理:只要出现一个变量就转化为StringBuffer()对象做加法
// 最后会产生新的字符串对象
StringBuffer tmp =new StringBuffer();
tmp.append(ss1);
tmp.append(ss6);//遇到“+”再来一个append
String d1 = tmp.toString();//生成了一个新的字符串对象(堆)
public class TestStringBuffer {
public static void main(String[] args) {
StringBuffer s = new StringBuffer();//默认空间大小16
//TestStringBuffer s = new TestStringBuffer(10);//指定它的厨初始容量
s.append("aaa");//追加新内容
s.append("bbb");//追加内容
System.out.println(s.toString());//转化为字符串
s.setCharAt(1,'c');//修改内容
System.out.println(s);
}
}