StringBuffer

1.StringBuffer类的概述

  1.String 和 StringBuffer 的区别

    String 是一个不可变字符序列

    StringBuffer 是一个可变的字符序列

2.StringBuffer 类的构造方法

   1.StringBuffer 的构造方法

     public StringBuffer();无参构造方法

     public StringBuffer(int capacity);指定容量的字符串缓冲区对象

     public StringBuffer (String str);指定字符串内容的字符串缓冲区对象

   2.StringBuffer 的方法

     public int capacity ();返回当前容量

     public int length();返回长度,也就是元素数量

 1   public static void main(String[] args) {
 2         StringBuffer s = new StringBuffer();
 3         //s.length()代表字符串缓冲区容器中的字符个数,实际值
 4         System.out.println(s.length());
 5         //容器的初始容量,理论值
 6         System.out.println(s.capacity());
 7         // 字符串缓冲区的容量也可以自己指定大小
 8         StringBuffer s2 = new StringBuffer(10);
 9         System.out.println(s2.length());//容器中的字符个数,实际值
10         System.out.println(s2.capacity());//容器的初始容量,理论值
11 
12         StringBuffer s3 = new StringBuffer();
13         for(int i=0;i<20;i++){
14             s3.append(i);
15         }
16         System.out.println(s3.length());//容器中的字符个数,实际值
17         System.out.println(s3.capacity());//容器的初始容量,理论值
18     }


   

 2.StringBuffer 的添加功能

  1.StringBuffer的添加功能 

    添加后,内容还是StringBuffer本身,也就是一个类

    public StringBuffer append(String str);可以把任意类型数据添加到字符串缓冲区里,并返回字符串缓冲区本身

    public StringBuffer insert(int offset,String str);在指定位置把任意类型的数据插入到字符串缓冲去里面,并返回字符串缓冲区本身  

  2.StringBuffer的删除功能

    public StringBuffer deleteCharAt(int index);删除指定位置的字符串,并返回本身 

    public StringBuffer delete(int start,int end);删除指定位开始指定位置结束的内容,并返回本身

 1  /*
 2      * A:StringBuffer的删除功能
 3      * public StringBuffer deleteCharAt(int index):
 4      * 删除指定位置的字符,并返回本身
 5      * public StringBuffer delete(int start,int end):
 6      * 删除从指定位置开始指定位置结束的内容,并返回本身
 7      */
 8     public static void main(String[] args) {
 9         StringBuffer s = new StringBuffer();
10         //当缓冲区中这个索引上没有元素的时候就会报StringIndexOutOfBoundsException
11         s.append("实战Hadoop2.0从云计算到大数据");
12         s.deleteCharAt(0);////根据索引删除掉索引位置上对应的字符
13         System.out.println(s);
14         s.delete(0, 3);//包含头,不包含尾
15         System.out.println(s);
16     }

3.StringBuffer 的替换和反转功能

  StringBuffer 的替换功能

    public StringBuffer replace(int start,int end,String str)从 start 开始,到 end 范围内的字符串用 str 替换

  StringBuffer 的反转功能

    public StringBuffer reverse();将字符串反转

1 StringBuffer sb = new StringBuffer("jinghang");
2         sb.replace(0, 4, "hang");
3         System.out.println(sb);    //输出结果为  hanghang
4         
5         sb.reverse();
6         System.out.println(sb); //输出结果为  gnahgnah

4.StringBuffer 的截取功能及注意事项 

  StringBuffer的截取功能

    public String subString(int start);从指定位置截取到末尾

    public String subString (int start ,int end);截取从指定位置开始到位置开始到结束位置,包括开始位置,不包括结束位置

  截取后返回值不再是 StringBuffer 本身,

    

1     StringBuffer sb = new StringBuffer("nihao");
2         /*sb.substring(2);
3          * System.out.println(sb);//nihao注意:返回值类型不再是StringBuffer本身
4 */        
5         String str1 = sb.substring(2);
6         System.out.println(str1);
7         String str2 = sb.substring(2, 5);//截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
8         System.out.println(str2);

5.String 和 StringBuffer 相互转换

  String —— StringBuffer

    通过构造方法

    通过 addend()方法

  StringBuffer —— String

    通过构造方法

    通过 toString()方法

    通过subString(0,length);

 StringBuffer 转换String

         * a:通过构造方法
         * b:通过toString()方法
         * c:通过subString(0,length);
         */
        StringBuffer s = new StringBuffer("jinghang");
        String s1 = new String(s);//通过构造将StringBuffer转换为String
        System.out.println(s1);

        String s2 = s.toString();//通过toString方法将StringBuffer转换为String
        System.out.println(s2);

        //通过截取子字符串将StringBuffer转换为String
        String s3 = s.substring(0, s.length()-1);
        System.out.println(s3);
    }    

String转化为StringBuffer

1   //通过构造方法将字符串转换为StringBuffer对象
2                 StringBuffer s1 = new StringBuffer("jinghang");
3                 System.out.println(s1);
4                 System.out.println("++++++++++++++++++");
5                 //通过append方法将字符串转换为StringBuffer对象
6                 StringBuffer s2 = new StringBuffer();
7                 s2.append("jinghang");
8                 System.out.println(s2);

 6.区别

 StringBuffer 和 StringBuilder 的区别

  StringBuffer 是jdk 1.0 版本的,是线程安全,效率低

  StringBuilder 是jdk1.5版本的,线程不安全,但效率高

String 和 StringBuffer ,StringBuilder 的区别 

  String是一个不可变字符序列

  StringBuffer StringBuilder是可变的字符序列

7.String 和 StringBuffer 分别作为参数传递

   基本数据类型的值传递,不改变其值  

  引用数据类型的值传递,改变其值

  String类虽然是引用数据类型,但是他当做参数传递时和基本数据类型是一样的

     如果你想修改字符串的的值,应该用stringBuffer

 1   public static void main(String[] args) {
 2 
 3         String s = "21班你们";
 4         change(s);
 5         System.out.println(s);    //输出结果为   21班你们
 6 
 7         System.out.println("++++++++++++++++++++");
 8 
 9         StringBuffer sb = new StringBuffer("21班你们");
10         change(sb);
11         System.out.println(sb);    //输出结果为    21班你们nihao
12     }
13 
14     public static void change(String s) {
15         s += "nihao";  
16     }
17     public static void change(StringBuffer sb) {
18         sb.append("nihao");
19     }

  

原文地址:https://www.cnblogs.com/xsh726/p/11373772.html