A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄嵘才 中级黑马   /  2012-12-25 09:31  /  1954 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 esirong 于 2012-12-25 12:44 编辑

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

6 个回复

倒序浏览
Stringbuilder,效率高,但线程不安全
Stringbuffer,效率相对较低,但线程安全
所以在单线程下使用Stringbuilder,可提高效率
而多线程下使用Stringbuffer比较好,可以使线程安全

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快
StringBuilder:是在1.5才出现的,之前都是用StringBuffer

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 laughing 于 2012-12-25 11:35 编辑

1:在执行效率方面StringBuilder大于StringBuffer
2: StringBuffer与StringBuilder,都是字符串变量,是可变的对象,
当我们用他们对字符串进行改变操作做时不像String那样引发新的String对象,所以执行速度快
3:StringBuilder线程不安全,StringBuffer线程安全
当字符串缓冲区被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,但可以保证StingBuffer的安全。
总之如果要操作少量的数据用 = String                  
,单线程操作字符串缓冲区 下操作大量数据 = StringBuilder                    
,多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
回复 使用道具 举报
简单点说,一般在增加字符串少于3条包括3条时用String是最节省资源也最快速
然后超过3条就用StringBuffer和StringBuilder

而多线程情况下用StringBuffer比较好,因为同步线程安全
而在不使用多线程的情况下用StringBuilder是最快速的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马