String类表示的字符串是定长的,而StringBuffer类提供了可变长的字符串,同时还提供了大量的字符串功能。在StringBuffer类的字符串中可以再插入字符,此时,StringBuffer会自动增加内存空间,这在String中是无法做到的。
1、构造函数:
StringBuffer(); 采用默认的构造函数,会给字符串预留16个字符空间
StringBuffer(int buffersize); buffersize用来设置缓冲区的大小
StringBuffer(String str); str用来初始化StringBuffer中的内容
2、长度运算:
length()方法用来得到字符串的长度,capacity()用来得到分配给字符串的容量,它通常比实际字符要预留更多的空间,以允许增加字符。
如果初始化了字符串后,要更改缓冲区大小可用ensureCapacity()方法,这样可以为新增字符串预先分配空间,因为再分配空间的代价是比较大的,而且频繁的分配空间会产生碎片。ensureCapacity的格式如下:
void ensureCapacity(int capacitysize); 其中,capacitysize参数用来指定缓冲区的大小。
要改变字符串的长度可用setLength()方法,其格式如下:
void setLength(int length);其中,参数length指出了要设置的字符串的长度,如果length长度大于原长度,则在新加入长度的空间中设为空格,如果length长度小于原长度,则字符串后面小于原长度部分的字符串将会丢失,使用此方法时要特别注意这一点。
3、获取与修改字符:
使用charAt()方法可从StringBuffer类的字符串中获取指定的字符;通过setCharAt()方法可以修改StringBuffer类字符串中指定的字符。其格式如下:
char charAt(int position); position指出了要获取的字符在字符串中的下标
void setCharAt(int position,char ch); position是要更改的字符的下标,ch是更改后的字符。
4、获取子字符串:
用getChars()方法把StringBuffer中的子字符串复制给一个数组,格式如下:
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart);
参数sourceStart是StringBuffer中要提取的字符串开始的下标;参数sourceEnd是结束的下标;target[]是接收子字符串的字符数组;targetStart是开始接收数组的下标。
注意:使用此方法一定要确保target[]数组的长度足够长,以容纳子字符串的内容。
另外,substring()方法也可用于获取StringBuffer的一部分,其调用形式如下:
String substring(int startPosition); 用于返回从startPosition开始到末尾的子字符串;
String substring(int startPosition,int endPosition); 用于返回从startPosition开始到下标endPosition结束的子字符串。
5、追加字符或字符串:
在StringBuffer尾部追加字符或字符串可使用方法append(),调用的方法有多种,统一表述如下:
StringBuffer append(Object obj); 其中,obj可以是任意类型,比较常用的是一些简单数据类型以及String类,该方法返回追加后的StringBuffer。
6、插入字符:
用inset()方法可将一个字符串插入到另一个字符串中。常用的有:
StringBuffer insert(int insertIndex,char ch);用来在insertIndex处插入一个字符ch
StringBuffer insert(int insertIndex,String str); 用来在insertIndex处插入一个字符串str。
7、字符串翻转:
要实现StringBuffer字符串的翻转可用方法reverse(),其格式如下:
StringBuffer reverse(); 返回翻转后的字符串
8、删除字符和字符串:
删除字符和字符串的方法有两种,如下:
StringBuffer delete(int startPosition,int endPosition); delete()用于删除从startPosition下标开始到endPosition下标结束的字符串,返回删除后的StringBuffer对象
StringBuffer deleteCharAt(int deletePosition); deleteCharAt()用于删除位于deletePosition下标处的字符,返回删除后的StringBuffer对象。
9、替换字符串:
方法replace()完成用一个字符串取代StringBuffer中的部分字符串的功能。
StringBuffer replace(int startPosition,int endPosition,String str);该方法把StringBuffer中从下标startPosition处开始到下标endPosition处结束的字符串替换为str,返回替换后的StringBuffer对象。