黑马程序员技术交流社区

标题: StringBuffer 和 StringBuilder有什么区别啊。 [打印本页]

作者: 黄嵘才    时间: 2012-12-25 09:31
标题: StringBuffer 和 StringBuilder有什么区别啊。
本帖最后由 esirong 于 2012-12-25 12:44 编辑

String ,StringBuffer,和 Stringbuilder.
这两个都可用来替代那个String做一些增长字符,更长字串,好像功能都相同。就不太了解这个。
还有,那么在什么情况下,用哪一种会比较好。


作者: 高会仁    时间: 2012-12-25 09:37
Stringbuilder,效率高,但线程不安全
Stringbuffer,效率相对较低,但线程安全
所以在单线程下使用Stringbuilder,可提高效率
而多线程下使用Stringbuffer比较好,可以使线程安全
作者: 黄锦成    时间: 2012-12-25 10:19
StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快
StringBuilder:是在1.5才出现的,之前都是用StringBuffer


作者: 谢辉林    时间: 2012-12-25 10:21
本帖最后由 laughing 于 2012-12-25 11:35 编辑

1:在执行效率方面StringBuilder大于StringBuffer
2: StringBuffer与StringBuilder,都是字符串变量,是可变的对象,
当我们用他们对字符串进行改变操作做时不像String那样引发新的String对象,所以执行速度快
3:StringBuilder线程不安全,StringBuffer线程安全
当字符串缓冲区被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,但可以保证StingBuffer的安全。
总之如果要操作少量的数据用 = String                  
,单线程操作字符串缓冲区 下操作大量数据 = StringBuilder                    
,多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

作者: 陈泽鑫    时间: 2012-12-25 17:49
简单点说,一般在增加字符串少于3条包括3条时用String是最节省资源也最快速
然后超过3条就用StringBuffer和StringBuilder

而多线程情况下用StringBuffer比较好,因为同步线程安全
而在不使用多线程的情况下用StringBuilder是最快速的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2