StringBuffer 与 StringBuilder
来源:互联网 发布:马其顿 知乎 编辑:程序博客网 时间:2024/06/03 12:59
区别
1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,
2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,
而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。
3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全
而StringBuffer则每次都需要判断锁,效率相对更低
实现原理
StringBuffer类继承自AbstractStringBuilder抽象类,实现Serializable序列化接口和CharSequence接口。
AbstractStringBuilder抽象类实现Appendabel,CharSequence接口。
StringBuffer初始化及扩容机制
1.StringBuffer()的初始容量可以容纳16个字符,当该对象的实体存放的字符的长度大于16时,实体容量就自动增加。StringBuffer对象可以通过length()方法获取实体中存放的字符序列长度,通过capacity()方法来获取当前实体的实际容量。
2.StringBuffer(int size)可以指定分配给该对象的实体的初始容量参数为参数size指定的字符个数。当该对象的实体存放的字符序列的长度大于size个字符时,实体的容量就自动的增加。以便存放所增加的字符。
3.StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符。当该对象的实体存放的字符序列长度大于size个字符时,实体的容量自动的增加,以便存放所增加的字符。
JVM StringBuffer实现
JVM内部采用了StringBuffer来连接字符串了,那么我们自己就不用用StringBuffer,直接用”+“就行了吧!“。是么?当然不是了。俗话说”存在既有它的理由”,让我们继续看后面的循环对应的字节码。
因为每次执行“+”操作时jvm都要new一个StringBuffer对象来处理字符串的连接,这在涉及很多的字符串连接操作时开销会很大。
- StringBuilder与StringBuffer
- String,StringBuffer与StringBuilder
- String,StringBuffer与StringBuilder
- StringBuffer 与 StringBuilder
- String,StringBuffer与StringBuilder
- StringBuilder 与 StringBuffer
- String,StringBuffer与StringBuilder
- StringBuffer与StringBuilder区别
- StringBuffer与StringBuilder
- StringBuilder 与StringBuffer
- stringbuffer与stringbuilder的
- StringBuffer与StringBuilder
- String, StringBuffer与StringBuilder
- String,StringBuffer与StringBuilder
- StringBuilder 与 StringBuffer 区别
- StringBuffer与StringBuilder区别
- StringBuffer与StringBuilder区别
- StringBUffer与StringBuilder
- 第4部分库与运行库(第10章 内存)
- H5表单相关新增元素和属性
- 赏析ReentrantLock源码
- Python——代码覆盖报告covera
- 你一定要知道的关于Linux文件目录操作的12个常用命令
- StringBuffer 与 StringBuilder
- 2018校招(持续更新)
- Python——os.exec**系列用法
- hylan:Oracle的USEREVN()函数 和 sys_context()函数
- Machine Learning Foundations
- Java并发编程-无锁CAS与Unsafe类及其并发包Atomic
- QLineEdit 单行文本框
- 说说今天刷Nvidia TX2踩的坑
- CSDN-markdown编辑器【这个不错记录下来】