专栏名称: xcbeyond
架构师
目录
相关文章推荐
Java编程精选  ·  前阿里员工:内推了个38岁的研发,简历到HR ... ·  2 天前  
浙江新闻  ·  全球特警“世界杯”,“China ... ·  2 天前  
解放军报  ·  起床号 ·  3 天前  
51好读  ›  专栏  ›  xcbeyond

StringBuilder 和 StringBuffer的区别 | Java Debug 笔记

xcbeyond  · 掘金  ·  · 2021-05-10 15:03

正文

阅读 3

StringBuilder 和 StringBuffer的区别 | Java Debug 笔记

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看< 活动链接 >

提问

StringBuffer StringBuilder 主要有哪些区别呢?它们之间是否存在一些性能方面的讨论话题呢?

回答1

StringBuffer 是同步的,而 StringBuilder 却不是。

StringBuilder 主要为了替代 StringBuilder 的不同步问题。

在大部分情况下,是几乎不需要同步的。如果有人想使用 StringBuilder 进行同步,则只需在实例上使用同步代码块 {}

我赞同上述的说法,认为 StringBuffer 不是一个好的方式(除非你必须使用它的 API )。

对于那些将这两者混合使用的人来说,好的记忆方法是: Buffer ,是较旧的版本,因此是同步的。较新的 Builder 类使用 Builder 模式,则是异步的。

但是, StringBuffer StringBuilder 慢。您可以根据您的应用程序来选择对应的类型。

另一个区别是 StringBuffer 可以与 Matcher#appendReplacement 一起使用,而 StringBuilder 却不能一起使用。这是一个非常烦人的 API 差异,尤其是因为 Matcher 它不是线程安全的,因此不需要进行 appendReplacement 同步。

关于 StringBuilder 的多线程环境中失败的更多细节,可以参考: stackoverflow.com/questions/3…







请到「今天看啥」查看全文