StringBuffer,StringBuilder和String有什么区别
String字符串一旦赋值后就不能被修改,只能通过修改引用来指向新的字符串
StringBuilder和String可以在堆里面修改字符串
两者在使用时基本相同
使用String来组合字符串
String s = "Cam";
s+="work";
System.out.println(s);//输出结果为Camwork
存储原理:在栈里面生成s引用,在堆里面存储“Cam”数据,并且s是指向Cam。堆里面了存储“work”,它们之间是分开的。当进行相加的时候,就是把“Cam”和“work”分别复制到同一块内存区域里组编成一个新的字符串,s指向这块新的内存区域。
使用StringBuffer来组合字符串
使用StringBuffer来组合字符串
StringBuffer sb = new StringBuffer("Cam");
sb.append("work");
System.out.println(sb);
存储原理:StringBuffer相当于增加一个缓冲区,当我们创建一个StringBuffer时,会在堆里面申请一个比较大的内存,保证可以存的下初始值(Cam)的情况下,还会有预留的空间,虽然是空白的,但还是属于Cam的内存区域。当我们用append追加字符串的时候,就可以把新的字符串放到空余空间就行了。与String相比,StringBuffer更加快。