StringBuffer与StringBuilder

codeshuo 2010-09-11 11:00:59
StingBuffer和StringBuilder都是字符串操作的。StringBuffer是线程安全的,我从一些资料上看到,字符串"+"操作会被编译成StringBuffer的append操作。我想问一下如果直接用“+”会不会影响性能?还有就是,StringBuilder是非线程安全的,性能应该会高一点。但什么情况下必须要用StringBuffer?
求高人解答
...全文
285 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2010-09-12
  • 打赏
  • 举报
回复
一个线程安全(StringBuffer) 一个非线程安全(StringBuilder) 正常情况用后边的 如果你是从jdk 1.5学起的应该养成该好习惯 我老师按照1.4给我讲的课 结果我总是误用StringBuffer...
uastation 2010-09-12
  • 打赏
  • 举报
回复
学习了..
youjianbo_han_87 2010-09-11
  • 打赏
  • 举报
回复
你都说了嘛,线程安全的适合分布式程序。线程不安全的,效率高。但是不适合分布式程序。。
  • 打赏
  • 举报
回复
在下面这个帖子 42 楼我在那里有一些字符串连接运算符“+”的试验,结论处有什么时候可以用“+”,什么时候不应该用“+”。

http://topic.csdn.net/u/20080415/12/3f2b9589-e97c-4129-8941-011bd9203a98.html

当 StringBuilder 能被多个线程共享的时候,就必须得使用 StringBuilder,比如:单例对象中有个 StringBuilder 的成员变量,且单例对象中有操作这个成员变量的方法时,就得使用 StringBuffer 了。

如果只是在方法中用于字符串连接的话,那就尽管放心地使用 StringBuilder 吧。

不被其他多线程共享对象引用的局部变量是线程安全的。
解未知数 2010-09-11
  • 打赏
  • 举报
回复
字符串的+操作会出现很多new string这样的操作,new对象是很耗资源的.
StingBuffer在多线程的情况下使用,比如在servlet中有一个属性是字符串,每一个请求都可能对其值进行修改,这时候最好就用StingBuffer.
mumuchen 2010-09-11
  • 打赏
  • 举报
回复
直接用“+”一般情况下是效率不高,但如果用append不当或误操作了,例如append在循环内,使用时要注意清空,否则append会越来越长,会感觉到程序越来越慢的。(StingBuffer或StringBuilder将数据库记录拼接成文件,5000条一个文件,类似这类情况需要注意)
mumuchen 2010-09-11
  • 打赏
  • 举报
回复
StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法有synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。
颍川公子 2010-09-11
  • 打赏
  • 举报
回复
用 StringBuffer 可以实现动态变化 用着比较方便
SuperCodingMan 2010-09-11
  • 打赏
  • 举报
回复
+操作会多次创建String对象,然后再调用StringBuilder的append()操作。这样看的话+操作的性能是没有直接自己建一个StringBuilder来append高效的。但是谁叫 + 操作方便呢!
erpanger 2010-09-11
  • 打赏
  • 举报
回复
学习了。。。
thegodofwar 2010-09-11
  • 打赏
  • 举报
回复
其实大部分情况下StringBuffer都可以通用,StringBuilder常常使用在语言自身设计上(属于精打细算那种)

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧