API这样解释:

StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 

可将

字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行 同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 



StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。

append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 



例如,如果 z 引用一个当前内容为 "start" 的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含 "startle",而 z.insert(4, "le") 将更改字符串缓冲区,使之包含 "starlet"。 



通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 



当发生与源序列有关的操作(如源序列中的追加或插入操作)时,该类只在执行此操作的字符串缓冲区上而不是在源上实现同步。 



每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 



JDK 5 开始,为该类

补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但 由于它不执行同步,所以速度更快。 



String类创建的字符串对象是不可修改的,也就是说,String字符串不能修改、删除或替换字符串中的某个字符,即String对象一旦创建,那么实体是不可以再发生变化的.


StringBuffer类能创建可修改的字符串序列,也就是说,该类的对象的实体的内存空间可以自动的改变大小,便于存放一个可变的字符序列。  



StringBuffer:String增强版



StringBuffer声明


StringBuffer sb = new StringBuffer();


StringBuffer sb = new StringBuffer("aaa");



StringBuffer的使用



sb.toString();//转换为String类型


sb.apend("**");//追加字符串



StringBuffer类提供了四种构造方法,其格式如下:



Public StringBuffer();


构造一个不包含字符的字符串缓冲区,其初始的容量设为 16 个字符。



public StringBuffer(int);


构造一个不包含字符的字符串缓冲区,其初始容量由参数设定。



public StringBuffer(String);


构造一个字符串缓冲区,来表示和字符串参数相同的字符序列。 字符串缓冲区的初始容量为16加上字符串参数的长度。



public StringBuffer(CharSequence seq);


构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符



public

synchronized StringBuffer append()


该功能是将一个字符添加到另一个字符串缓冲区的后面。在应用中,如果添加字符的长度超过字符串缓冲区的的长度,则字符串缓冲区自动将长度进行扩充。


可用来向字符串缓冲区添加逻辑变量、字符、字符数组、双精度数、浮点数、整型数、长整型数、对象类型的字符串和字符串等。



public int capacity()


用于得到目前字符串缓冲区的剩余长度,该方法的返回类型为整数



public int length( )


用于得到字符串缓冲区中字符串的长度。该方法的返回类型为整数。



public void ensureCapacity(int minimumCapacity)


该方法重新设置字符串缓冲区的长度。但必须保证缓冲区的容量至少等于指定的最小数。



public void SetLength(int newLength)


指定了新字符序列的长度,如果参数 newLength 小于该字符串缓冲区的当前长度。 该字符串缓冲区将被截断来包含恰好等于由参数 newLength 给出的字符数,如果参数大于该字符串的当前长度,空字符将被加在现存缓冲区的后面。



public StringBuffer  insert(int index,String str)


字符串缓冲区StringBuffer的插入操作主要用于动态地向字符串缓冲区插入逻辑变量、字符、字符数组、双精数、浮点数、整型数、长整型数、对象类型的字符串和字符串等。



public StringBuffer reverse()


将字符串序列进行反转,结果为StringBuffer。



char charAt(int index)


取得指定位置的字符。返回值类型为字符char。位置编号从0开始。



void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)


赋值指定位置的字符到字符串数组dst. 无返回值 



void setCharAt(int n,char ch)


将指定位置n的字符,替换成ch,位置编号从0开始



public StringBuffer  replace(int start,int end,String str)


将字符串缓冲区中起始位置为start、终止位置为end的字符替换为由字符串str指定的内容。



StringBuffer delete(int start,int end)


删除字符串缓冲区中起始序号为start、终止序号为end-1的字符。



StringBuffer deleteCharAt(int index)


删除字符串缓冲区中指定位置的字符,方法的返回类型为StringBuffer



public StringBuffer  replace(int start,int end,String str)


将字符串缓冲区中起始位置为start、终止位置为end的字符替换为由字符串str指定的内容。


下面的代码段为replace方法的例子:


StringBuffer sbfSource=new StringBuffer("You are the best!");


String str=new String("I'm"); 


sbfSource.replace(0,7,str); // I'm the best!



publuc String substring(int start,int end)


取得字符串缓冲区中起始位置为start、终止位置为end的内容,方法返回类型为String。



public String substring(int start)


取得字符串缓冲区中从起始位置为start直至字符串缓冲区结束的所有字符,方法返回类型为String。




例子:


public class Test {  
    public static void main(String[] args) {  
        StringBuffer strBuffer = new StringBuffer();  
        strBuffer.append("StringBuffer");  
        strBuffer.append(" ");  
        strBuffer.append("Test");  
        System.out.println(strBuffer.toString());  
          
        StringBuilder strBuilder = new StringBuilder();  
        strBuilder.append("StringBuffer");  
        strBuilder.append(" ");  
        strBuilder.append("Test");  
        System.out.println(strBuilder.toString());  
    }  
}