String StringBuffer StringBuilder的异同
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的异同相关推荐
- String,StringBuffer,StringBuilder三者的异同
String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- String, StringBuffer, StringBuilder之间的区别
String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/String ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- String, StringBuffer,StringBuilder
String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...
- `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`
Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...
- StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别
1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...
- 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则
文章目录 1.StringBuffer类 方法: 利用StringBuffer开头与结束的时间计算: String ,StringBuffer,StringBuilder比较 2.装箱和拆箱 3.日期 ...
最新文章
- nginx内存占用高---内存池使用思考
- IFE-16 addEventHandler跨浏览器实现事件绑定
- tcp/ip 协议栈Linux内核源码分析九 IPv6分片ip6_fragment 分析
- 如虎添翼|高德地图+Serverless 护航你的假日出行
- 架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结
- 参会者说丨LiveVideoStackCon 2019上海 音视频技术大会
- python3如何连接mysql数据库
- 自适应设计与响应式设计
- C++从入门到放肆!
- 微软ASP.NET官方网站MVC教程实际操作中的部分问题
- 斐波那契数列PHP非递归数组实现
- matlab中怎么找晶闸管,matlab中晶闸管如何连接
- 关于AARRR用户增长漏斗模型,你究竟了解多少?
- Git命令使用出现Cannot update paths and switch to branch xxx at the same time解决方法
- AI之路最近的一些思考
- 婚姻中,不去表达爱,比不爱更可怕
- 声纹识别开源框架python_GitHub - yeyupiaoling/VoiceprintRecognition-Tensorflow: 使用Tensorflow实现声纹识别,博客地址:...
- JAVA计算两条直线的交点(判断两条线段相交)
- 【基础知识】PID(比例微分积分)控制
- 【动态规划】状态机模型:买卖股票的最佳时机 IV