java - StringBuffer 的意义是什么,应该更频繁地使用,StringBuffer 还是 StringBuilder?
问题描述
为什么java中需要StringBuffer?我对java完全陌生,当我在StringBuffer的部分看到另一组类似的方法时,我正在研究Strings和String方法的操作。我研究了 i,但无法清楚地了解它。
解决方案
在实践中,每个人都应该始终使用 StringBuilder(并且永远不要使用 StringBuffer;通常您并不真正需要 StringBuilder,因为编译器会为您添加一个帮助程序)。StringBuffer 仍然存在的唯一原因是担心把它拿走会在某处破坏一些代码。Java非常重视向后兼容性。
StringBuffer 和 StringBuilder 的区别在于 StringBuffer 的方法是同步的。这意味着每个尝试调用同步方法的线程都必须获取对象上的锁,这可以防止两个线程在同一对象上调用方法可能导致对象状态损坏的问题。对象中的后备数据存储是一个动态增长的数组,如果两个线程同时处理它并且一个线程将其从另一个线程中更改出来,就会发生不好的事情:抛出异常,或者更糟糕的是,数据被踩踏默默上。
事实证明,现实生活中并不需要一个字符串构建对象来连接从多个线程同时接收的字符串,因为没有人希望以一种无法预测子字符串出现顺序的方式构造字符串。这很有可能当你想构造一个字符串(并且确定你确实需要一个构建器)时,该构建器将是线程受限的(意味着只有一个线程可以访问该构建器),因此不需要同步。
推荐阅读
- amazon-ec2 - 使用 Systemd 在 EC2 Centos 上运行 Airflow 网络服务器:权限被拒绝
- javascript - Google Scripts Web App 未使用数据填充 Googlesheet
- python - pip install pdfminer 错误(Windows 上的 python 2)
- f# - 返回任务
在 F# 中,语法是什么? - django - 在 Django Dojo 中使用 bootswatch
- assembly - 如何用 AND 重写(P 或 Q)
- python - 数据框熊猫在列中找到正确的值
- wordpress - 标题显示动态图标后的伪元素
- git - 为许多开发人员在 git repo 中设置文件权限
- c# - 如何在 C# 中使用存储过程结果作为子查询