StringBuffer (字符串缓冲对象)

  概念:用于表示可以修改的字符串,称为字符串缓冲对象

  作用:使用运算符的字符串将自动创建字符串缓冲对象

     例如: str1+str2的操作,实际上是把str1与str2都创建成StringBuffer类对象

  构造方法:详见API

    StringBuffer():创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间

    StringBuffer(String str):根据字符串str的内容创建StringBuffer对象,并默认保留 16 个字符的缓冲空间

    StringBuffer(int capacity):创建一个空的StringBuffer对象,缓冲空间大小由capacity指定

  方法:前面是返回值 + 方法

    StringBuffer insert(int index, 数据值):将x插入到索引为index的位置,数据值可以为任何类型的数据

    StringBuffer append(类型 数据):将类型的参数以字符串的表示形式追加到序列

    int length():获得当前StringBuffer对象的长度

    void setCharAt(int index, char ch):使用 ch 指定的新值替换 index指定的位置上的字符

    String toString():转换为字符串形式

    StringBuffer reverse():将当前StringBuffer对象中的字符序列倒置

    StringBuffer delete(int start, int end):删除当前对象中从start位置开始直到 end 指定的索引位置的字符序列

    StringBuffer deleteCharAt(int index):将删除 index 指定的索引处的字符

    StringBuffer replace(int start, int end, String str):使用一组字符替换另一组字符,从 start位置开始替换,直到end位置结束

  特点:Java中一旦创建了字符串就不能直接更改,这就是字符String的不变性

     StringBuffer类正是针对此问题而提供的字符可变序列;和String类的最大区别就是可以更改

 

StringBuilder

  概念:JDK1.5以后提供的新的字符缓冲区

  作用:StringBuffer一样

  区别:          StringBuffer  StringBuilder

      线程是否安全   安全       不安全

      效率       相对低      相对高 

代码示例

 

 1 package summary2;
 2 
 3 //字符缓冲区
 4 public class StringBufferClass
 5 {
 6     static void StringBuffer()
 7     {
 8         String s = "StringBuffer";
 9         StringBuffer sb = new StringBuffer(s);        //根据指定字符串创建StringBuffer对象    
10         sb.replace(6,12,"");                        //根据下标替换Buffer为空、得到String
11         String str = sb.toString();                    //将sb类转换成字符串str
12         for (int i=0;i<200000;i++)                    //为测试效率循环添加数据
13         {
14             sb.append(str);                            //序列最后面添加对象str
15             sb.insert(0,str);                        //在下标0的位置插入str
16         }
17     }
18     static void StringBuilder()                        //创建StringBuilder方法、方法体和StringBuffer相同
19     {
20         String s = "StringBuffer";
21         StringBuilder sb = new StringBuilder(s);
22         sb.replace(6,12,"");
23         String str = sb.toString();
24         for (int i=0;i<200000;i++)
25         {
26             sb.append(str);
27             sb.insert(0,str);
28         }
29     }
30     public static void main(String[] args) 
31     {
32         long startTime1 = System.currentTimeMillis();    //获取开始时间、精度位纳秒
33         StringBuffer();                                    //调用StringBuffer()
34         long endTime1 = System.currentTimeMillis();        //获取结束时间、精度位纳秒
35         System.out.println("StringBuffer运行时间:"+(endTime1-startTime1)+"ms");    
36         long startTime2 = System.currentTimeMillis();    //获取开始时间、精度位纳秒
37         StringBuilder();                                //调用StringBuilder()
38         long endTime2 = System.currentTimeMillis();        //获取结束时间、精度位纳秒
39         System.out.println("StringBuilder运行时间:"+(endTime2-startTime2)+"ms");
40     }
41 }