stringbuffer和string的区别 stringbuffer

string和stringbuffer和stringbuilder的区别是什么?string和stringbuffer和stringbuilder的区别:
StringBuffer线程安全,StringBuilder线程不安全 。缓冲区:StringBuffer直接使用toStringCache构造字符串 。StringBuilder复制字符数组再构造 。
性能:StringBuilder的性能要远大于StringBuffer 。
线程安全:StringBuffer:线程安全,StringBuilder:线程不安全 。
因为StringBuffer的所有公开方法都是synchronized修饰的,StringBuilder并没有StringBuilder修饰 。
缓冲区:StringBuffer每次获取toString都会直接使用缓存区的toStringCache值来构造一个字符串 。而StringBuilder则每次都需要复制一次字符数组,再构造一个字符串 。
所以,缓存冲这也是对 StringBuffer 的一个优化吧,不过 StringBuffer 的这个toString 方法仍然是同步的 。
性能:StringBuffer是线程安全的,它所有公开方法都是同步的,StringBuilder是没有对方法加锁同步的,所以毫无疑问,StringBuilder的性能要远大于 StringBuffer 。

stringbuffer和string的区别 stringbuffer

文章插图
String 和StringBuffer的区别一、内部实现方式不同
1、String:在进行字符串处理时,会生成新的对象 。
2、StringBuffer:在进行字符串处理时,不生成新的对象,在内存使用上要优于串类 。
二、使用情况不同
1、String:用在固定的字符串,不经常对字符串进行更改的情况 。
2、StringBuffer:经常需要对一个字符串进行修改,例如插入,删除等操作,使用StringBuffer要更加适合一些 。
三、优势不同
1、String:String类中没有用来改变已有字符串中的某个字符的方法
2、StringBuffer:StringBuffer的类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区 。这样使用的StringBuffer类的 附加方法追加字符比字符串使用+操作符添加字符到一个已经存在的字符串后面有效率得多 。
参考资料来源:百度百科-StringBuffer
参考资料来源:百度百科-string类
StringBuffer是什么?String是不可变的类型,即创建一个String对象后,就不能修改这个String,平常使用的"aa"+"bb"生成"aabb"这个过程中,实际是创建了三个String对象:"aa", "bb", "aabb"
StringBuffer是相对于String的一个可变的类型,StringBuffer可以在原对象上进行加长或缩短等修改操作 。适用于需要大量连接字串或拼接处理字串的情况,相应的情况下就不宜使用String对象了 。
String和StringBuffer的相互转换在实际问题中遇到需要替换String掉字符串中指定位置的部分字符串,上网查了下,需要将String类型字符串转换为StringBuffer类型,使用StringBuffer的replace(int start, int end,String str),然后再将StringBuffer类型转换为String类型 。
即StringBufferbuffer="buffer";//这样错误
Stringstr = "hello";//先新建一个字符串
StringBuffer buffer = newStringBuffer(str);
StringBufferbuffer= new StringBuffer();
buffer.append(str);
StringBuffer buffer = new StringBuffer("world");
String str1 = new String(buffer);
Stringstr2 = buffer.toString();
【stringbuffer和string的区别 stringbuffer】 本文借鉴:

    秒懂生活扩展阅读