1.String与StrIngBuffer StringBuilder的主要区别在于StrIng是不可变对象,每次对String对象进行修改之后,相对于重新创建一个对象。

String源码解读:

private final char value[];
public String() {this.value = "".value;}

不管何种String的构造函数,在初始化之后,其内部value是不可改变

StringBuilder源码

public final class StringBuilderextends AbstractStringBuilderimplements java.io.Serializable, CharSequence

 可以看出继承了 AbstractStringBuilder 并且实现了序列化接口 java.io.Serializable  和 最底层接口CharSequence

 public StringBuilder() {super(16);}AbstractStringBuilder(int capacity) {value = new char[capacity];}

 可以看出其底层维持了一个char[]数组 长度为16

  public AbstractStringBuilder append(String str) {if (str == null)return appendNull();int len = str.length();ensureCapacityInternal(count + len);str.getChars(0, len, value, count);count += len;return this;}

 线程相关内容的 修改其内部的内容 并没有加同步机制

StringBuffer的源码检查

public final class StringBufferextends AbstractStringBuilderimplements java.io.Serializable, CharSequence

可以看出继承的内容类与StringBuilder相同 实现的接口相同

public StringBuffer() {super(16);}AbstractStringBuilder(int capacity) {value = new char[capacity];}

可以看出底层实现都是char数组 长度为16

 @Overridepublic synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this;}@Overridepublic synchronized StringBuffer delete(int start, int end) {toStringCache = null;super.delete(start, end);return this;}

内部涉及数据操作部分是又一个同步的过程 是线程安全的

最后涉及扩容机制 StringBuffer StringBuilder正常扩容

最后一点StringBuilder AbstractStringBuilder都是1.5 StringBuffer是1.0

转载于:https://www.cnblogs.com/ad-zhou/p/9824445.html

String StringBuffer StringBuilder的异同相关推荐

  1. String,StringBuffer,StringBuilder三者的异同

    String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...

  2. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  3. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  4. String, StringBuffer, StringBuilder之间的区别

    String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/String ...

  5. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  6. String, StringBuffer,StringBuilder

    String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...

  7. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  8. StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别

    1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...

  9. 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则

    文章目录 1.StringBuffer类 方法: 利用StringBuffer开头与结束的时间计算: String ,StringBuffer,StringBuilder比较 2.装箱和拆箱 3.日期 ...

最新文章

  1. nginx内存占用高---内存池使用思考
  2. IFE-16 addEventHandler跨浏览器实现事件绑定
  3. tcp/ip 协议栈Linux内核源码分析九 IPv6分片ip6_fragment 分析
  4. 如虎添翼|高德地图+Serverless 护航你的假日出行
  5. 架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结
  6. 参会者说丨LiveVideoStackCon 2019上海 音视频技术大会
  7. python3如何连接mysql数据库
  8. 自适应设计与响应式设计
  9. C++从入门到放肆!
  10. 微软ASP.NET官方网站MVC教程实际操作中的部分问题
  11. 斐波那契数列PHP非递归数组实现
  12. matlab中怎么找晶闸管,matlab中晶闸管如何连接
  13. 关于AARRR用户增长漏斗模型,你究竟了解多少?
  14. Git命令使用出现Cannot update paths and switch to branch xxx at the same time解决方法
  15. AI之路最近的一些思考
  16. 婚姻中,不去表达爱,比不爱更可怕
  17. 声纹识别开源框架python_GitHub - yeyupiaoling/VoiceprintRecognition-Tensorflow: 使用Tensorflow实现声纹识别,博客地址:...
  18. JAVA计算两条直线的交点(判断两条线段相交)
  19. 【基础知识】PID(比例微分积分)控制
  20. 【动态规划】状态机模型:买卖股票的最佳时机 IV

热门文章

  1. Python函数相关
  2. C# 将PDF转为SVG的3种情况
  3. 第12周Python学习周记
  4. ASP.NET之通过JS向服务端(后台)发出请求(__doPostBack is undefined)
  5. BaseServlet 继承 httpServlet
  6. CoreGraphics中CGContextAddArcToPoint函数的用法说明
  7. 产品设计:一层分类与多层分类模式的感悟
  8. DataList控件中使用Xml数据源
  9. 页面库无法捕获到Added事件?
  10. Linux shell 字符串转数字进行运算符操作