包名:java.lang.StringBuilder
因为String类的对象内容是不可更改的,每当我们拼接字符串的时候,都需要在内存中创建一个新的对象.
在API文档中,对String类的描述: 字符串是常量,他们的值在创建后不能被更改.
由此可知,当字符串被拼接的时候,都会创建一个新的String对象.(缺点:耗时,浪费内存).
StringBuilder类可以解决字符串拼接的问题
StringBuilder类是一个可变长度的字符序列数据类型.
原理:内部拥有一个数组来存储字符串内容,进行字符串拼接的时候,直接在数组中加入新的内容.
StringBuilder可以自动维护数组的扩容.(创建时默认的空间大小为16字节)
超过时自动扩充,每次扩充大小翻倍.(X2)
构造方法:
public StringBuilder()
public StringBuilder(String str)
常用方法:
public StringBuilder append(...):添加任意数据的字符串.
public StringBuilder delete(int start,int end):删除此序列的子字符串中的字符。
public char charAt(int index):返回指定索引的char值
public StringBuilder deleteCharAt(int index):移除指定位置的char
public StringBuilder insert(int offset,Object o):将o参数的字符串插入到此序列中.
public int length():返回长度.
public StringBuilder replace(int start,int end,String string):用指定的string替换序列里面的子字符串.
public StringBuilder reverse():反转字符串.
*链式编程
如果一个方法的返回值仍然是一个引用数据类型,则可以继续调用该类型方法.
StringBuilder sb = new StringBuilder();
//可以一直调用append方法称为链式编程.
sb.append("ada").append("ds").append("da");
*StringBuilder已经重写了Object中的toString()方法.
oString()方法 : 将StringBuilder对象转换为不可变String对象
String string = sb.toString();