StringBuffer /StringBuilder的具体区别

田哥coder 2015-03-01 12:00:22
StringBuffer /StringBuilder,为什么在工作我看到基本上都是用前者,求解答
...全文
329 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy_think123 2015-03-03
  • 打赏
  • 举报
回复
看源码一目了然
光脚满地跑 2015-03-03
  • 打赏
  • 举报
回复
可以结贴了…… 局部变量用stringbuilder 除了极端情况,我都是用stringbuffer 但是要知道二者的区别,性能差异的栗子不太好举,感觉不涉及到synchronize的时候差距不不大
S117 2015-03-02
  • 打赏
  • 举报
回复
习惯而已,我就习惯用StringBuffer ,如果你非要追求效率,也可以用后者
xiaovhao 2015-03-02
  • 打赏
  • 举报
回复
StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer
ss36290109 2015-03-02
  • 打赏
  • 举报
回复
public StringBuilder append(Object obj) { return append(String.valueOf(obj)); } public synchronized StringBuffer append(Object obj) { super.append(String.valueOf(obj)); return this; } 这就是2个的最大区别
疯狂熊猫人 2015-03-01
  • 打赏
  • 举报
回复
引用 1 楼 scmod 的回复:
前面那个线程安全~ 可以看下JDKAPI说明 功能都差不多的 就是方法多了个synchronized修饰
如果只当做方法中的局部变量使用的话,推荐使用StringBuilder,它不是线程安全的,所以不会有同步操作的损耗,会比StringBuffer的效率要高一些。 其实你在工作中看到的代码有部分可能是别人的陋习,要会自己鉴别。 例如:
public void test(){
  StringBuffer buffer = new StringBuffer();//这里其实应该使用效率更高的StringBuilder,因为buffer不存在共享问题,它只是一个方法内部的局部变量,调用的时候创建,执行完毕后消失
...
}
scmod 2015-03-01
  • 打赏
  • 举报
回复
前面那个线程安全~ 可以看下JDKAPI说明 功能都差不多的 就是方法多了个synchronized修饰
日知己所无 2015-03-01
  • 打赏
  • 举报
回复
论坛不支持表格,下面的内容先想办法记住吧 StringBuffer【JDK1.0开始支持】【线程安全,适用于单/多线程】【性能稍低】 StringBuilder【JDK1.5开始支持】【线程不安全,仅适用于单线程】【性能略高】 先说说String吧,在对字符串进行大量操作时【比如 + 操作】,性能最低 而从JDK1.0就开始支持的StringBuffer,是“可变的”动态字符串数组,在进行串接(append)操作时,天生就比String性能高出很多【有些时候会高出20倍,具体示例代码可以百度搜索一下】 但是由于StringBuffer是线程安全的,所以在单线程的代码段中,还是没能把性能发挥到极致 在JDK1.5开发时,由于之前的Java的性能一直被诟病;如何让Java的运行性能逼近C/C++,是开发JDK的人员所面对的最大的挑战 所以为了达到单线程下最高的运行性能,StringBuilder就应运而生了【有些时候会比StringBuffer高1.5倍的性能】 了解了之后,就会得出结论: 没有谁好谁不好的问题,而是什么情况下应该用什么的问题

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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