IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

String,StringBuffer,StringBuilder的区别

xiaog's blog 2011-01-30 03:15:14 累计浏览 4,030 次
本机暂存

经常有公司问这样的面试题.

这个问题非常基础,很多面试的人,都知道String对象是不可变的,在说原因的时候没说清,其实看看String源码就知道了
在new String的时候,String 中的3个成员变量value,count,offset都是final的,当然String类也是final的,所以一旦初始化后不能修改的。

StringBuffer,与StringBuilder都实现了相同的接口,而且都继承相同的父类,不同的是,StringBuffer的大部分方法都是同步的,所以是线程安全,StringBuilder没有同步,所以通常情况下效率上StringBuilder是优于StringBuffer的。

StringBuffer与StringBuilder随着append会扩大value[]的容量,这里具体做法是使用System类中的arraycopy方法拷贝,这个方法是调用底层本地方法来处理的,类似于直接使用C的指针操作,比较快。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,894)
  2. Java开发岗位面试题归类汇总 (累计阅读 22,156)
  3. android 开发入门 (累计阅读 19,527)
  4. 记录一个软中断问题 (累计阅读 16,955)
  5. Go Reflect 性能 (累计阅读 14,155)
  6. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  7. HashMap解决hash冲突的方法 (累计阅读 12,654)
  8. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,181)
  9. Java程序员应该知道的10个eclipse调试技巧 (累计阅读 8,012)
  10. 如何让员工忠于公司? (累计阅读 7,940)