StringBuffer和StringBuilder在内部实现上有什么区别?StringTokenizer又是什么?何时使用它们?期待您的回答。
更新:
我也在查看源代码。
StringBuffer和StringBuilder在内部实现上有什么区别?StringTokenizer又是什么?何时使用它们?期待您的回答。
我也在查看源代码。
StringBuffer
是在JDK 1.0中引入的,它是线程安全的(所有方法都是synchronized
),而StringBuilder
自JDK 1.5以来就不是线程安全的。因此,在正常情况下推荐使用后者。
StringTokenizer
的用途与前两者完全不同:将字符串分割成片段,而不是组装。正如@Henning所指出的那样,自JDK 1.5以来它已经"被弃用",建议使用String.split
代替。
StringBuffer被设计为线程安全的类,StringBuffer的所有公共方法都是同步的。StringBuilder不处理线程安全问题,它的所有方法都未同步。
在大多数情况下,StringBuilder的性能优于StringBuffer。
尽可能使用新的StringBuilder。
这里是StringBuilder和StringBuffer的性能比较
StringBuilder和StringBuffer是用来保存字符串的类,而StringTokenizer类则允许应用程序将一个字符串分解为多个标记,所以它是与前两者不同的类。
StringBuffer - 是 StringBuilder 的同步版本(在其非同步的对等项之后引入)
StringBuffer的作用和StringBuilder相同,只是StringBuffer是线程安全的。
StringTokenizer用于根据一些分隔符将字符串拆分为标记。