String拼接、StringBuffer、StringBuil

2016-11-16  本文已影响0人  AlanGuo

String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

String:是不可改变的量,也就是创建后就不能在修改了。看上去改变实际上是创建了新的字符串。

StringBuffer:是一个可变字符串序列,它与String一样,在内存中保存的都是一个有序的字符串序列(char类型的数组),不同点是StringBuffer对象的值都是可变的。

StringBuilder:与StringBuffer类基本相同,都是可变字符换字符串序列,不同点是StringBuffer是线程安全的,StringBuilder是线程不安全的。

因此,在性能方面,由于String类的操作是产生新的String对象,而StringBuilder和StringBuffer只是一个字符数组的扩容而已,所以String类的操作要远慢于StringBuffer和StringBuilder。又因为 StringBuffer 要考虑同步而 StringBuilder 没有,所以 StringBuffer 要比 StringBuilder 慢。

所以:
速度(耗时 短→长):StringBuilder → StringBuffer → String

摘自http://www.jb51.net/article/84531.htm
在大部分情况下 StringBuilder > StringBuffer
java.lang.StringBuilder一个可变的字符序列是JAVA 5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步,所以使用场景是单线程。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的使用方法基本相同。

上一篇下一篇

猜你喜欢

热点阅读