1.StringBuffer的构造方法
StringBuffer()
创建一个StringBuffer对象,分配给该对象的缓冲区的大小可以容纳16个字符。
StringBuffer(int capacity)
创建一个StringBuffer对象,并接收一个整数参数,用于设置缓冲区的大小。
例如:
StringBuffer s=new StringBuffer(“hello”);
2.length()和capacity()方法
对于每一个StringBuffer对象来说,有两个很重要的属性,分别是长度和容量。通过调用length()方法可以得到当前StringBuffer对象的长度(字符的个数),而通过调用capacity()方法得到StringBuffer对象总的分配容量。它们的一般形式如下:
public int length()和public int capacity()
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer();
System.out.println(s1.length()); //0
System.out.println(s1.capacity()); //16
StringBuffer s2=new StringBuffer(10);
System.out.println(s2.length()); //0
System.out.println(s2.capacity()); //10
StringBuffer s3=new StringBuffer("hello");
System.out.println(s3.length()); //5
System.out.println(s3.capacity()); //21
}
}
3.append()方法
可以向已经存在的StringBuffer对象追加任何类型的数据,StringBuffer类提供了相应append()方法,如下所示:
StringBuffer append(boolean b)
StringBuffer append(char c)
StringBuffer append(char[] str)
StringBuffer append(char[] str,int offset,int length)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long lng)
StringBuffer append(Object obj)
StringBuffer append(String str)
StringBuffer append(StringBuffer sb)
注意:append方法都是向缓冲区 “追加”元素,这个“元素”参数可以是各种数据类型,这些数据先转化为字符串,再追加到StringBuffer对象中。如果添加的字符超出了缓冲区的大小,那么 缓冲区将自动扩充,总容量(等于旧容量*2+2)。
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("hello");
System.out.println(s1.length()); //5
System.out.println(s1.capacity()); //21
s1.append("abcdefgh");
System.out.println(s1.length()); //13
System.out.println(s1.capacity()); //21
s1.append("123456789");
System.out.println(s1.length()); //22
System.out.println(s1.capacity()); //44
}
}
public class Stringbuffer{
public static void main(String[] args){
String question=new String("1+1=");
int answer=3;
boolean result=(1+1==3); //false
StringBuffer sb=new StringBuffer();
sb.append(question);
sb.append(answer);
sb.append('\t');
sb.append(result);
System.out.println(sb); //1+1=3 false
}
}
4.ensureCapacity()和setLength()方法
ensureCapacity方法的一般形式如下:
public void ensureCapacity(int minimumCapacity):用于设置StringBuffer对象的缓冲区大小,同时满足StringBuffer对象的容量至少等于参数minimumCapacity 。如果当前对象容量大于参数minimumCapacity,则对象的新容量等于旧容量大小;如果当前对象容量小于参数minimumCapacity,则对象的新容量为:miniCapacity参数与(旧容量×2+2)两者中较大者。
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer();
System.out.println(s1.capacity()); // 旧容量:16
s1.ensureCapacity(8); //minimumCapacity=8; 当前容量(16)>8
System.out.println(s1.capacity()); // 新容量:16
StringBuffer s2=new StringBuffer();
s2.ensureCapacity(24); // minimumCapacity=24; 当前容量(16)<24,
System.out.println(s2.capacity()); //新容量取minimumCapacity=24
//与旧容量*2+2(34)两者中较大者等于34.
StringBuffer s3=new StringBuffer();
s3.ensureCapacity(100);
System.out.println(s3.capacity()); //新容量:100
}
}
setLength()方法
public void setLength(int newLength)
设置的字符串的长度,参数newLength代表字符串新的长度。当newLength>当前长度时,足够的空字符(‘\ u0000’)被追加使长度等于newLength。当newLength<当前长度时,在新长度之后存储的字符将丢失。
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("123456789");
s1.setLength(5);
System.out.println(s1);//”12345”
}
}
5.**insert()方法**
它是先调用String类的valueOf方法得到相应的字符串表达式。随后这个字符串被插入所调用的StringBuffer对象中。insert方法有如下几种形式:
StringBuffer insert(int offset,boo1ean b)
StringBuffer insert(int offset,char c)
StringBuffer insert(int offset,char[]str)
StringBuffer insert(int index,char[]str,int offset,int len)
StringBuffer insert(int offset,double d)
StringBuffer insert(int offset,float f)
StringBuffer insert(int offset,int i)
StringBuffer insert(int offset,long l)
StringBuffer insert(int offset,Object obj)
StringBuffer insert(int offset,String str)
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer(“123456789”);
s1.insert(2,“abc”); //从索引位置为2的地方插入字符串
System.out.println(s1); //12abc3456789
}
}
6.**reverse()方法:**将StringBuffer对象内的字符串进行翻转,并返回当前对象。
public StringBuffer reverse()
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
s1.reverse();
System.out.println(s1); //”cba”
}
}
7.public char charAt(int index)方法和public void setCharAt(int index,char ch)
charAt(int index)方法返回参数index索引位置上的字符。其中index的取值范围:0----s.length()-1 。
setCharAt(int index,char ch)方法,将当前StringBuffer对象中索引等于参数index的位置上字符,用参数ch进行替换。
index的取值范围:0----s.length()-1
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
char c=s1.charAt(1);
System.out.println(c); //’b’
s1.setCharAt(1,'m');
System.out.println(s1); //”amc”
}
}
8.public StringBuffer deleteCharAt(int index) 和public StringBuffer delete(int startIndex,int endIndex)
deleteCharAt(int index)方法:删除当前StringBuffer对象字符串中index索引位置上的字符,并返回当前对象。
delete(int startIndex,int endIndex)方法:从当前StringBuffer对象字符串中删除一个子字符串,并返回当前对象。其中,startIndex表示开始位置,endIndex表示结束位置,删除的字符中不含结束位置上的字符。
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
System.out.println(s1.deleteCharAt(1)); //"ac"
StringBuffer s2=new StringBuffer("123abc");
System.out.println(s2.delete(1,5)); //"1c"
}
}
9.public StringBuffer replace(int startIndex,int endIndex,String str)方法:
将当前StringBuffer对象字符串的一个子串用参数str替换,并返回当前对象。
被替换的子串由下标startIndex和endIndex指定。这样startIndex到endIndex-1的字符串被str替换。
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("We all like java");
System.out.println(s1.length()); //16
int startIndex=s1.indexOf("java");
s1.replace(startIndex,s1.length(),"apple");
System.out.println(s1); // “We all like apple”
System.out.println(s1.length()); //17
}
}