StringBuilder与StringBuffer的一点笔记

  • toStringCache
  • toString()
  • append(String str)

toStringCache

 private transient char[] toStringCache;

这是StringBuffer中的一个成员变量,transient代表着它不可被序列化,"Cache"则可以看出它是用来作缓存的。

toString()

 toStringCache = null;

可以在很多对字符串进行操作的方法中看到这句代码,将缓存重置, 而只有在toString()中:

 public synchronized String toString() {if (toStringCache == null) {toStringCache = Arrays.copyOfRange(value, 0, count);}return new String(toStringCache, true);}

可以看到使用了这个缓存,因此StringBuffer是使用了缓存的,而StringBuilder则没有相应内容。

append(String str)

此外除开synchronize之外还有一点小发现:
两者均extends AbstractStringBuilder,都是AbstractStringBuilder的子类,它们在执行append() 时的唯一区别就是Buffer先进行了清空缓存的操作。
StringBuffer:

    public synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this;}

StringBuilder:

    public StringBuilder append(String str) {super.append(str);return this;}

StringBuilder与StringBuffer的一点笔记相关推荐

  1. String、StringBuilder、StringBuffer的比较

    最近学习中又遇到了StringBuilder,突然就联想到StringBuffeer和String.于是翻翻笔记还在.那么他们有什么区别? 1.StringBuilder与StringBuffer S ...

  2. StringBuilder、StringBuffer、String区别

    相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE5.0 ...

  3. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  4. 探秘Java中String、StringBuilder以及StringBuffer

    相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它 ...

  5. 复习1 - String,StringBuilder,StringBuffer的执行效率区别

    该文章主要是针对于三者的执行速度来说,相对于String来说,String是要落后于StringBuffer的,StringBuffer相对于StringBuilder也稍微慢一点,开始试验 Stri ...

  6. StringBuilder 、StringBuffer 、 String

    2019独角兽企业重金招聘Python工程师标准>>> 一.三者在执行速度方面的比较: StringBuilder >  StringBuffer  >  String ...

  7. 探秘Java中的String、StringBuilder以及StringBuffer

    转载:http://www.cnblogs.com/dolphin0520/p/3778589.html 一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String ...

  8. 面试:一文搞懂String、StringBuilder、StringBuffer 区别

    1.三者之间的区别 区别 String StringBuilder StringBuffer [值] 不可变 可变 可变 [效率 ] 最低 最高 中等 [线程] 非线程安全 非线程安全 线程安全 不同 ...

  9. java replace stringbuilder_【基础篇】揭开String、StringBuilder以及StringBuffer的神秘面纱...

    String这个类是Java中使用的最频繁的类之一,据本仔的不完全统计,这个类每月的使用量可饶地球-呃,三四五六圈,今天刚好用到了这个类,就简单的做个总结吧,让我们一起走进科学,探索神秘的String ...

最新文章

  1. python中math库_Python库详解之math库
  2. 深入学习keepalived之一 keepalived的启动
  3. 问题 G: 最小的回文数
  4. windows系统中创建线程常用哪几个函数,有什么区别?
  5. aws lambda_AWS Lambda事件源映射:使您的触发器混乱无序
  6. phpMyAdmin密码设置
  7. java的环境变量设置_Java开发环境不再需要配置classpath
  8. Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”...
  9. Linux安装MySQL-MariaDB版本
  10. Doris支持spark导入设计文档
  11. Zend Studio 10 phpFormatter 错误的解决
  12. 廊坊金彩教育:店铺主图如何优化
  13. 手机谷歌翻译位置服务器,谷歌翻译更新手机端App:中国用户可无障碍使用
  14. 以word转PDF为例,免费的文档格式转换方法分享
  15. 如何依靠副业赚钱,应对人到中年的职场危机
  16. ubuntu22从双系统开始到深度学习环境搭建+必备软件安装
  17. jiaozivideoplayer全屏填充模式字幕被裁切掉了的问题解决
  18. Microsoft Word 教程:如何在 Word 中插入艺术字?
  19. min2440LCD驱动
  20. 万有引力调研报告 ———大学物理第二节课思考题一

热门文章

  1. CUDA Texture Memory
  2. ZZULIOJ 1088: 手机短号 (多实例)
  3. OJ1031: 判断点在第几象限
  4. qt mysql乱码_Qt连接mysql 并且 解决中文乱码问题
  5. python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...
  6. Sigma Function(LightOJ-1336)
  7. 吉哥系列故事――完美队形II(HDU-4513)
  8. Summarize to the Power of Two(CF-1005C)
  9. 理论基础 —— 排序 —— 希尔排序
  10. 计算多项式的值(信息学奥赛一本通-T1012)