news 2026/6/25 0:13:41

String、StringBuilder和StringBuffer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
String、StringBuilder和StringBuffer

1.String(字符串常量)

  • 不可变性:String对象一旦创建,其内容不可修改。每次对字符串的操作(如拼接、替换)都会生成新的String对象,原对象不变。
String s = "Hello"; s = s + " World"; // 生成新对象,原"Hello"对象被丢弃(可能被GC回收)
  • 内存效率:频繁修改字符串会导致大量临时对象产生,增加内存开销和垃圾回收压力。
  • 线程安全:所有方法都是线程安全的(因为不可变)。
  • 适用场景:字符串内容不经常变化,或需要共享安全字符串的场景(如配置常量)。

2.StringBuilder(字符串可变,非线程安全)

  • 可变性:通过内部字符数组(char[])存储内容,支持原地修改(如append、insert、delete),不会频繁创建新对象。
  • 线程安全非线程安全(方法无synchronized修饰),单线程场景下性能更高。
  • 性能:在单线程中频繁修改字符串时,性能远优于String和StringBuffer。
  • 初始化:默认容量为16,超出容量时自动扩容(通常翻倍,避免频繁扩容)。
  • 适用场景:单线程环境下需要频繁修改字符串的场景(如循环内拼接字符串)。

3.StringBuffer(字符串可变,线程安全)

  • 可变性:与StringBuilder类似,支持原地修改。
  • 线程安全线程安全(方法用synchronized修饰),多线程环境下可安全使用,但同步操作会带来性能开销。
  • 性能:在多线程中修改字符串时,性能优于String;但在单线程中比StringBuilder慢。
  • 初始化:默认容量为16,扩容逻辑与StringBuilder一致。
  • 适用场景:多线程环境下需要频繁修改字符串的场景(如线程安全的日志拼接)。

对比总结

特性StringStringBuilderStringBuffer
可变性不可变可变可变
线程安全安全(不可变)非安全安全(synchronized)
性能(单线程)低(频繁创建对象)最高中(同步开销)
性能(多线程)不安全(需外部同步)最高(内置同步)
初始化容量无(内容决定)默认16默认16
扩容机制无(不可变)超出容量时自动扩容(翻倍)超出容量时自动扩容(翻倍)
  • String:用于只读场景,或字符串内容不频繁修改的情况。
  • StringBuilder单线程中需要频繁修改字符串时(如循环拼接),优先使用。
  • StringBuffer多线程中需要安全修改字符串时(如共享变量拼接),但需注意同步带来的性能损耗。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 12:34:51

OpCore Simplify:攻克黑苹果配置难题的智能解决方案

OpCore Simplify:攻克黑苹果配置难题的智能解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而头疼不已&…

作者头像 李华
网站建设 2026/6/20 16:55:27

OpCore Simplify:5步快速构建完美黑苹果配置的终极指南

OpCore Simplify:5步快速构建完美黑苹果配置的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款革命性的开源…

作者头像 李华
网站建设 2026/6/24 23:27:55

Qwen3-1.7B:32k长文本+119种语言的轻量AI新选择

Qwen3-1.7B:32k长文本119种语言的轻量AI新选择 【免费下载链接】Qwen3-1.7B-Base Qwen3-1.7B-Base具有以下特点: 类型:因果语言模型 训练阶段:预训练 参数数量:17亿 参数数量(非嵌入)&#xff1…

作者头像 李华
网站建设 2026/6/8 9:43:19

Vue-Element-Plus-Admin:企业级后台管理系统的完整解决方案

Vue-Element-Plus-Admin:企业级后台管理系统的完整解决方案 【免费下载链接】vue-element-plus-admin A backend management system based on vue3, typescript, element-plus, and vite 项目地址: https://gitcode.com/gh_mirrors/vu/vue-element-plus-admin …

作者头像 李华
网站建设 2026/6/15 5:53:23

猫抓视频嗅探:网页媒体资源下载终极指南

猫抓视频嗅探:网页媒体资源下载终极指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法保存而烦恼吗?想永久收藏在线课程、精彩短视频或工作素材&#xff…

作者头像 李华