总结:
String:适用于少量的字符串操作的情况,即创建复制后,修改的比较少的情况
StringBuilder:适用于单线程下字符串缓冲区进行大量操作的情况
StringBuffer:适用于多线程下字符串缓冲区进行大量操作的情况
1,首先说说运行速度,或者执行速度,
三者的速度快慢大概为:StringBuild>StringBuffer> String .
String 最常见,但最慢的原因:
String是字符串的常量,StringBuild和StringBuffer是字符串变量,String一旦创建就不可更改,新的String其实是新的常量,String只能被创建不能被修改,StringBuild和StringBuffer是可更改的,下面以代为为例:
1 String str1="abc";
2 String str2="de";
3 String str=str1+str2;
4 Sys.out.println(str);
运行这段代码会先输出abc,在输出abcde,看起来这个str对象的值被改变了,其实是假象,第二个是创建了新的对象,两个对象不一样, 在jvm中代码是这样处理的,首先创建一个String对象str并把abc赋值给str,然后在第三行代码中,jvm其实又创建了一个新的对象也叫str,并把原来的str的值赋值和“de”赋值给新的str,而原来的str会被垃圾回收机