首页 > 编程语言 > 详细

java中StringBuffer存在的意义

时间:2020-06-23 14:20:48      阅读:60      评论:0      收藏:0      [点我收藏+]

StringBuffer存在的意义?

StringBuffer和StringBuilder都可以高效的处理字符串,StringBuffer是线程安全的,StringBuilder是线程不安全的,当然StringBuilder性能更高一些。

因此理论上在多线程的场景下我们应该使用线程安全的StringBuffer。

但是

  1. 在实际开发中,几乎没有场景会用到线程安全的字符串拼接器。
  2. 同时,StringBuffer的线程安全仅仅是保证jvm不抛出异常从而可以顺利的往下执行而已,并不能保证逻辑正确和调用顺序正确。
  3. 对于实际开发中,我们大多数时候需要的是锁,而不仅仅是线程安

最后,为什么会有stringbuffer的存在?答案很简单,因为最早是没有stringbuilder的,sun公司的开发者不知道处于什么考虑,决定让stringbuffer是线程安全的,然后大约10年之后,人们终于意识到这是一个愚蠢的决定,于是,在jdk1.5的时候,决定提供一个非线程安全的stringbuffer实现,并命名为stringbuilder。
如果没有循环的情况下,单行用加号拼接字符串是没有性能损失的,java编译器会隐式的替换成stringbuilder,但在有循环的情况下,编译器没法做到足够智能的替换,仍然会有不必要的性能损耗,因此,用循环拼接字符串的时候,还是老老实实的用stringbuilder吧。

java中StringBuffer存在的意义

原文:https://www.cnblogs.com/Raymon-Geng/p/13181697.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!