【发布时间】:2011-04-16 16:45:04
【问题描述】:
StringBuffer vs StringBuilder Vs StringTokenizer 在内部实现上有什么区别。什么时候使用这些。敬请期待答案。
更新:-
我也在浏览源代码。
【问题讨论】:
标签: java
StringBuffer vs StringBuilder Vs StringTokenizer 在内部实现上有什么区别。什么时候使用这些。敬请期待答案。
我也在浏览源代码。
【问题讨论】:
标签: java
StringBuffer - 是 StringBuilder 的同步版本(在其非同步对等体之后引入)
【讨论】:
StringBuffer 被设计为线程安全的,并且 StringBuffer 中的所有公共方法都是同步的。 StringBuilder 不处理线程安全问题,并且它的所有方法都没有同步。
在大多数情况下,StringBuilder 的性能优于 StringBuffer。
尽可能使用新的 StringBuilder。
Here 是 performance comparison 的 StringBuilder & StringBuffer
StringBuilder 和 StringBuffer 保存 String,其中 StringoTokeizer 类允许应用程序将字符串分解为标记 .. 所以它就像一个奇怪的输出
【讨论】:
StringBuffer - 在 JDK 1.0 中引入 - 是线程安全的(它的所有方法都是 synchronized),而 StringBuilder - 因为 JDK 1.5 - 不是。所以一般情况下建议使用后者。
StringTokenizer 的目的与前两个完全不同:将琴弦切成碎片,而不是组装。正如@Henning 所指出的,它自 JDK 1.5 起也“退休”了——建议改用 String.split。
【讨论】:
StringTokenizer 虽然没有被弃用,但也是“出于兼容性原因保留的旧类,尽管在新代码中不鼓励使用它”。 download.oracle.com/javase/6/docs/api/java/util/…
StringBuffer 的用途与 StringBuilder 相同,只是 StringBuffer 是线程安全的。
StringTokenizer 用于根据某些分隔符将字符串拆分为标记。
【讨论】: