String类是final类,而且String类不提供修改字符序列的方法,也就是说,String对象不能修改、删除或替换字符序列中的某个字符,即String对象一旦创建,实体就不可以再发生变化,我们称这样的对象是不可变对象。
而StringBuffer类,能够创建可修改的字符串序列,即该类的对象的内存的实体空间可以自动改变大小,便于存放一个可变的字符串。
一、StringBuffer类的构造方法
StringBuffer类有三个构造方法,分别是
StringBuffer();
StringBuffer(int size);
StringBuffer(String s);
(1)构造方法StringBuffer()创建一个StringBuffer对象,分配给该对象的实体的初始容量可以容纳16个字符,当该对象的实体存放的字符序列的长度大于16时,实体的容量自动增加,以便存放所增加的字符。StringBuffer对象可以通过方法length()获取实体中存放的字符序列的长度,通过方法capacity()获取当前实体的实际容量。
(2)构造方法StringBuffer(int size)创建一个StringBuffer对象,可以指定分配给该对象的实体的初始容量为参数size指定的字符个数。当该对象的实体存放的字符序列的长度大于size个字符时,实体的容量自动增加,以便存放所增加的字符。
(3)构造方法StringBuffer(String s)创建一个StringBuffer对象,可以指定分配给该对象的实体的初始容量为参数字符串s的长度额外再加16个字符。
具体示例:
StringBuffer str=new StringBuffer();
str.append("大家好");
System.out.println("str:"+str);//str:大家好
System.out.println("length:"+str.length());//length:3
System.out.println("capacity:"+str.capacity());//capacity:16
str.append("i am very love java");
System.out.println("str:"+str);//str:大家好i am very love java
System.out.println("length:"+str.length());//length:22
System.out.println("capacity:"+str.capacity());//capacity:34
StringBuffer s=new StringBuffer("hello");
System.out.println("length:"+s.length());//length:5
System.out.println("capacity:"+s.capacity());//capacity:21
二、StringBuffer类的常用方法
1.append()——将其他Java类型(八大数据类型)数据转化为字符串后,再追加到StringBuffer对象中。
2.char charAt(int n)——得到参数n指定的索引位置上的单个字符。n的值必须是正数,并且小于当前对象的字符序列的长度。
3.void setCharAt(int n,char ch)——将当前StringBuffer对象实体中的字符序列的位置n处的字符用参数ch指定的字符替换。n的值必须是正数,并且小于当前对象的字符序列的长度。
4.StringBuffer insert(int index,String str)——StringBuffer对象使用insert方法将参数str指定的字符序列插入参数index指定的位置,并返回当前对象的引用。
5.public StringBuffer reverse()——StringBuffer对象使用reserve方法将该对象实体中的字符序列翻转,并返回当前对象的引用。
6.StringBuffer delete(int startIndex,int endIndex)——delete(int startIndex,int endIndex)从当前StringBuffer对象实体中的字符序列中删除一个子字符序列,并返回当前对象的引用。这里startIndex指定了需删除的第一个字符的下标,而endIndex指定了需删除的最后一个字符下标是endIndex-1,即要删除的子字符序列从startIndex到endIndex-1。deleteCharAt(int index)方法删除当前StringBuffer对象的字符序列中index位置处的一个字符。
7.StringBuffer replace(int startIndex,int endIndex,String str)——replace(int startIndex,int endIndex,String str)方法将当前StringBuffer对象的startIndex到endIndex-1的字符序列替换成参数str指定的字符序列,并返回当前StringBuffer对象的引用。
具体示例:
StringBuffer str=new StringBuffer("0123456789");
str.setCharAt(0,'a');
str.setCharAt(1,'b');
System.out.println(str);//ab23456789
str.insert(2,'**');
System.out.println(str);//ab**23456789
str.delete(6,8);
System.out.println(str);//ab**236789
str.replace(2,4,'@@');
System.out.println(str);//ab@@236789