为什么我们到底需要Java中的StringBuffer

sid:

为什么在Java中需要StringBuffer?我对Java完全陌生,当我在StringBuffer部分看到另一组方法时,我正在研究有关Strings和String方法的操作。我研究了有关i的内容,但无法掌握清晰的想法。

内森·休斯(Nathan Hughes):

在实践中,每个人都应该始终使用StringBuilder(不要使用StringBuffer;通常,您实际上并不需要StringBuilder,因为编译器会为您添加帮助程序来完成此工作)。StringBuffer仍然存在的唯一原因是担心将其拿走会破坏某些地方的代码。Java 非常重视向后兼容性

StringBuffer和StringBuilder之间的区别在于StringBuffer的方法是同步的。这意味着每个试图调用同步方法的线程都必须获得对象上的锁,这可以防止在同一对象上调用两个线程的方法可能导致对象状态损坏的问题。对象中支持的数据存储是一个动态增长的数组,如果两个线程同时使它混乱,一个线程又将另一个线程从另一个线程中更改出来,则会发生不好的事情:抛出异常,或更糟的是,数据被重载默默地

事实证明,实际上并不需要一个字符串构建对象来连接从多个线程同时接收到的字符串,因为没有人希望以一种无法预测子字符串显示顺序的方式来构造一个字符串。当您要构造一个字符串(并确定您确实需要一个构建器)时,该构建器将受到线程限制(这意味着只有一个线程可以访问该构建器),因此不需要同步。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章