当前位置: 首页 > news >正文

String、StringBuffer、StringBuilder 的区别

这三个类都用于处理字符串,但在可变性、线程安全性和性能方面有显著差异:

1. String

  • 不可变性:String 对象是不可变的,任何修改都会创建新对象

  • 线程安全:由于不可变,天然线程安全

  • 性能:频繁修改时性能较差,因为每次修改都创建新对象

  • 使用场景:适用于字符串不经常变化的场景

2. StringBuffer

  • 可变性:内容可以修改,不会创建新对象

  • 线程安全:方法都是同步的(synchronized),线程安全

  • 性能:比String好,但比StringBuilder稍差(因为同步开销)

  • 使用场景:多线程环境下需要频繁修改字符串

3. StringBuilder

  • 可变性:内容可以修改,不会创建新对象

  • 线程安全:不同步,非线程安全

  • 性能:三者中最高,因为没有同步开销

  • 使用场景:单线程环境下需要频繁修改字符串

总结对比

特性StringStringBufferStringBuilder
可变性不可变可变可变
线程安全
性能低(修改时)
使用场景常量字符串多线程修改单线程修改

最佳实践

  • 字符串不经常改变:用 String

  • 多线程环境频繁修改:用 StringBuffer

  • 单线程环境频繁修改:用 StringBuilder

相关文章:

  • 2025年4月个人工作生活总结
  • 93. 后台线程与主线程更新UI Maui例子 C#例子
  • 用于实时辐射场渲染的3D高斯溅射——3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 「Mac畅玩AIGC与多模态10」开发篇06 - 使用自定义翻译插件开发智能体应用
  • 拥抱 Kotlin Flow
  • MySQL入门篇(SQL语句、函数、约束、多表查询、事务)
  • Linux -- SysremV 共享内存通信
  • 软件产品登记测试 VS 确认测试有何不同?第三方检测机构深度解析
  • 0901context_useReducer_状态管理-react-仿低代码平台项目
  • Django 学习指南:从入门到精通(大体流程)
  • 健康养生:构建健康生活的多维度指南
  • 扩展根分区
  • Word中批量修改MathType公式
  • 完美解决react-native文件直传阿里云oss问题一
  • 港口危货储存单位主要安全管理人员考试精选题目
  • K8S - HPA + 探针实战 - 实现弹性扩缩与自愈
  • springboot框架常用配置
  • Microsoft Entra ID 详解:现代身份与访问管理的核心
  • 《PyTorch documentation》(PyTorch 文档)
  • 学习记录:DAY21
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • 人民日报评论员:因势利导对经济布局进行调整优化
  • 金砖国家外长会晤主席声明(摘要)
  • 国铁集团去年收入12830亿元增3%,全年铁路运输利润总额创新高
  • 国务院安委办、应急管理部进一步调度部署“五一”假期安全防范工作
  • “80后”蒋美华任辽宁阜新市副市长