`
xudongcsharp
  • 浏览: 467476 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

String、StringBuilder、StringBuffer区别

 
阅读更多
String 字符串常量,不可变
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)快


1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer


String是不可变的,StringBuffer是可变的;StringBuffer是线程安全的,StringBuilder是非线程安全的。
因而在大部分情况下字符串的拼接速度为:StringBuilder>StringBuffer>String
解释如下:
因为String是不可变的(通过ide的debugger可以发现其属性大都为final类型),因此每次对其操作改变其变量值,其实是生成一个新的对象,然后将变量引用指向新对象;因此速度慢。

StringBuffer则不同,对其操作即直接操作对象指向的引用,无需产生新对象,速度很快;它是线程安全的,在维护多线程的同步等也会消耗一点性能。

StringBuilder是jdk5之后新增的,其用法与StringBuffer完全一致,但它是线程不安全的,在单线程中最佳,因为其不需要维护线程的安全,因此是最快的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics