一、介绍
StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。StringBuilder不是线程安全的,而StringBuffer是线程安全的。但StringBuilder在单线程中的性能比StringBuffer高。StringBuilder类来源于jdk1.5及以后的版本
常用方法:
1、append(); //追加到末尾
2、insert(int offset,String str) ; //在指定的索引处插入字符串
3、delete(int startIndex,int endIndex) //删除区域索引[startIndex,endIndex)的字符
4、reverse() //反转
StringBuilder的孪生兄弟StringBuffer,因为它们有一个相同的父类AbstractStringBuilder
二、源码解析
1 2 3 4 5 |
|
AbstractStringBuilder类是一个抽象类,有两个子类:StringBuffer和StringBuilder
AbstractStringBuilder类中有两个属性,分别是char
value[];
//值、
int
count;
//长度。
所以,StringBuilder里是直接可以用的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
StringBuilder重载了很多append方法
查看源码发现,所有的append方法里最后都有一句return this,有什么作用呢?
1 2 3 4 5 6 7 8 9 10 11 12 |
|
return this的作用就是使调用成一个方法链,可以一直调用append。
三、总结
1、StringBuilder和StringBuffer都是继承了AbstractStringBuilder这个抽象类
2、StringBuilder同样是final修饰的,不可改变。跟String很多类似的地方
3、StringBuilder线程不安全,单线程效率高(比较常用)
4、StringBuilder创建对象个数问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|