String类一旦完成初始化,其值便不会再改变。为了方便且高效的对字符串进行一些相关操作,我们常常会用到StringBuffer与StringBuilder两个操作缓冲区的类。
StringBuffer是一个容器,是一个字符串缓冲区,对其进行CURD(增删改查)操作的都是同一个对象。StringBuffer长度是可变换的,且可以操作多种数据类型,而对于数组而言,数组的长度是固定且只能操作一种数据类型。通常情况下,
我们对StringBuffer的相关操作,最终都是为了产生出我们所需要的String类型的字符串,因此最终调用StringBuffer的toString()方法获得最终的结果。
StringBuilder与StringBuffer在功能上没有多大的区别,但是StringBuilder非线程同步,而StringBuffer线程同步,执行效率上StringBuilder要高于StringBuffer,通常情况下,单线程非并发访问一般使用StringBuilder即能满足要求。
StringBuffer的C(添加):
StringBuffer append(); 将数据插入到原数据结尾处,
返回的是同一个对象。
StringBuffer insert(index,数据); 将数据插入到指定index位置。
StringBuffer的D(删除):
StringBuffer delete(start,end); 删除包含start位置,不包含end位置的数据。
StringBuffer deleteCharAt(index); 删除指定位置字符。
StringBuffer的R (读取):
char charAt(int index); 获取某个位置的字符。
int indexOf(String str); 获取某个字符串在数据中第一次出现的位置。
int lastIndexOf(String str); 获取某个字符串在数据中最后一次出现的位置。
int length(); 获取数据的长度。
String substring(start,end); 从已有的数据中截取出字符串。
StringBuffer的U(更新):
StringBuffer replace(start,end,string); 将某段数据替换成某个字符。
void setCharAt(int index, char ch); 将某个字符替换成新的字符,注意,此方法不是返回StringBuffer类型。
StringBuffer reverse(); 反转数据。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin); 将指定数据存储到dst字符数组当中。