Java--StringBuffer

来源:互联网 发布:zh 那汀女装淘宝有吗 编辑:程序博客网 时间:2024/04/28 13:34

一、StringBuffer类:线程安全的可变字符序列

1、StringBuffer类

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

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

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

2、StringBuffer和String的区别

        [1]String是一个不可变的字符序列

        [2]StringBuffer是一个可变的字符序列

二、StringBuffer类的构造方法

1、StringBuffer的构造方法:

        [1]public StringBuffer():无参构造方法

        [2]public StringBuffer(int capacity):指定容量的字符串缓冲区对象

        [3]public StringBuffer(Stringstr):指定字符串内容的字符串缓冲区对象

2、StringBuffer的方法:

        [1]publicint capacity():返回当前容量。理论值

        [2]publicint length():返回长度(字符数)。 实际值

三、StringBuffer的添加功能

1、public StringBuffer append(Stringstr):

        可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

2、public StringBuffer insert(int offset,Stringstr):

        在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

四、StringBuffer的删除功能

1、public StringBuffer deleteCharAt(int index):

       删除指定位置的字符,并返回本身

2、public StringBuffer delete(int start,int end):

       删除从指定位置开始指定位置结束的内容,并返回本身

五、StringBuffer的替换功能

1、public StringBuffer replace(int start,int end,Stringstr):

       从start开始到end用str替换

2、StringBuffer的反转功能

       public StringBuffer reverse();字符串反转

六、StringBuffer的截取功能

1、public String substring(int start):

       从指定位置截取到末尾

2、public String substring(int start,int end):

       截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

       注意:返回值类型不再是StringBuffer本身,返回String类型

七、StringBuffer和String的相互转换

1、String -- StringBuffer

      [1]通过构造方法

      [2]通过append()方法

2、StringBuffer -- String

        [1]通过构造方法

        [2]通过toString()方法

        [3]通过subString(0,length);

八、StringBuffer和StringBuilder的区别

1、StringBuffer和StringBuilder的区别

       [1]StringBuffer是jdk1.0版本的,是线程安全的,效率低

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

2、String和StringBuffer,StringBuilder的区别

       [1]String是一个不可变的字符序列

       [2]StringBuffer,StringBuilder是可变的字符序列

package com.cat.stringbuffer;public class StringBufferMethod {public static void main(String[] args) {/*  一、StringBuffer类:线程安全的可变字符序列      1、StringBuffer类           [1]线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。                   [2]可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。                   [3]StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。      2、StringBuffer和String的区别        [1]String是一个不可变的字符序列        [2]StringBuffer是一个可变的字符序列  二、StringBuffer类的构造方法      1、StringBuffer的构造方法:                [1]public StringBuffer():无参构造方法                [2]public StringBuffer(int capacity):指定容量的字符串缓冲区对象                [3]public StringBuffer(String str):指定字符串内容的字符串缓冲区对象              2、StringBuffer的方法:                [1]public int capacity():返回当前容量。理论值                [2]public int length():返回长度(字符数)。 实际值      三、StringBuffer的添加功能          1、public StringBuffer append(String str):            可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身          2、public StringBuffer insert(int offset,String str):            在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身  四、StringBuffer的删除功能          1、public StringBuffer deleteCharAt(int index):            删除指定位置的字符,并返回本身          2、public StringBuffer delete(int start,int end):            删除从指定位置开始指定位置结束的内容,并返回本身  五、StringBuffer的替换功能          1、public StringBuffer replace(int start,int end,String str):            从start开始到end用str替换              2、StringBuffer的反转功能                public StringBuffer reverse();字符串反转      六、StringBuffer的截取功能          1、public String substring(int start):            从指定位置截取到末尾          2、public String substring(int start,int end):            截取从指定位置开始到结束位置,包括开始位置,不包括结束位置              注意:返回值类型不再是StringBuffer本身,返回String类型          七、StringBuffer和String的相互转换              1、String -- StringBuffer                [1]通过构造方法                [2]通过append()方法              2、StringBuffer -- String                [1]通过构造方法                [2]通过toString()方法                [3]通过subString(0,length);      八、StringBuffer和StringBuilder的区别          1、StringBuffer和StringBuilder的区别                [1]StringBuffer是jdk1.0版本的,是线程安全的,效率低                [2]StringBuilder是jdk1.5版本的,是线程不安全的,效率高          2、String和StringBuffer,StringBuilder的区别                [1]String是一个不可变的字符序列                [2]StringBuffer,StringBuilder是可变的字符序列 * */initMethod();addMethod();//添加//String和StringBuffer作为参数传递System.out.println("-------------");String s1 = "abc";System.out.println(s1);change(s1);//Ctrl+1创建方法System.out.println(s1);//方法弹栈了System.out.println("-------------");StringBuffer sb1 = new StringBuffer();sb1.append("abc");System.out.println(sb1);change(sb1);//Ctrl+1创建方法System.out.println(sb1);}public static void change(StringBuffer sb1) {sb1.append("efg");}public static void change(String s1) {s1 = s1 + "efg";}private static void addMethod() {System.out.println("================添加功能=================");StringBuffer sb1 = new StringBuffer();System.out.println(sb1.toString());StringBuffer sb2 = sb1.append(true);System.out.println(sb2.toString());StringBuffer sb3 = sb1.append("abc");System.out.println(sb3.toString());StringBuffer sb4 = sb1.append(100);System.out.println(sb4.toString());System.out.println("--------");System.out.println(sb1.toString());//trueabc100System.out.println(sb2.toString());//trueabc100System.out.println(sb3.toString());//trueabc100System.out.println(sb4.toString());//trueabc100/*    StringBuffer是字符串缓冲区,是一个不可变的字符序列,当new的时候在堆内存创建  了一个对象,底层是一个长度为16的字符数组,当调用添加的方法时,不会再重新创建对象,  只是不断地向元缓冲区添加字符,其实这样操作就是四个对象指向同一个对象; * */StringBuffer sb11 = new StringBuffer("abc");//StringBuffer sb12 = sb11.insert(4, "123");      //StringIndexOutOfBoundsExceptionStringBuffer sb12 = sb11.insert(1, "123");System.out.println(sb12);StringBuffer sb13 = sb11.reverse();//反转功能System.out.println(sb13);}private static void initMethod() {System.out.println("================构造方法=================");StringBuffer sb1 = new StringBuffer();System.out.print(sb1.length());          //容器中的字符个数,实际值System.out.println(" " + sb1.capacity());        //容器中的初始容量,理论值StringBuffer sb2 = new StringBuffer(10);System.out.print(sb2.length());          System.out.println(" " + sb2.capacity());        StringBuffer sb3 = new StringBuffer("abc");System.out.print(sb3.length());     System.out.println(" " + sb3.capacity());        //length + 初始容量}}


1 0