Java StringBuffer類和 StringBuild類

Java StringBuffer類和 StringBuild類


StringBuffer類

介紹:java.lang.StringBuffer 代表 可變的字符序列,可以對字符串內容進行刪減,此時不會參數新的對象。
StringBuffer繼承於AbstractStringBuilder,可以看見value沒有final聲明, value可以不斷擴容。

在這裏插入圖片描述

StringBuffer類的構造器

StringBuffer 類不同於 String ,其對象必須使用構造器生成。有三個構造器:

  • StringBuffer():初始 容量爲 16 的字符串緩衝區
    爲什麼說容量爲16呢?看下源碼:
    在這裏插入圖片描述
  • StringBuffer(int size )):構造 指定容量的字符串緩衝區
  • StringBuffer(String str )):將 內容初始化爲指定字符串內容
    這裏我們來使用一下這三個構造器:
package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer();
        StringBuffer s2 = new StringBuffer(10);
        StringBuffer s3 = new StringBuffer("我愛喜歡寫博客");
        s1.append("a");
        s1.append(1);
        s1.append(false);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

結果如下:
在這裏插入圖片描述

StringBuffer類的常用方法

  • StringBuffer append ( xxx):提供了很多的 append() 方法 用於進行字符串拼接

實例代碼

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("武漢");
        s1.append("加油");
        System.out.println(s1);
    }
}

結果:
在這裏插入圖片描述

  • StringBuffer delete (int start,int end):刪除指定位置的內容

實例代碼

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("afasf1411");
        s1.delete(0,5);
        System.out.println(s1);
    }
}

結果爲:
在這裏插入圖片描述

  • StringBuffer replace (int start, int end, String str):把 [start,end) 位置替換爲 str

實例代碼

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("afasf1411");
        s1.replace(0,5,"123");
        System.out.println(s1);
    }
}

  • StringBuffer insert (int offset, xxx):在指定位置插入 xxx

實例代碼

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("Iyou");
        s1.insert(1,"love");
        System.out.println(s1);
    }
}

結果爲:
在這裏插入圖片描述

  • StringBuffer reverse ():把當前字符序列逆轉

實例代碼:

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("Iloveyou");
        s1.reverse();
        System.out.println(s1);
    }
}

結果爲:
在這裏插入圖片描述
另外一些:

StringBuilder類

StringBuilder 和 StringBu ffer 非常類似,均代表可變的字符序列 而且提供相關功能的方法 也 一樣
它的源代碼:
StringBuilder繼承於AbstractStringBuilder,可以看見value沒有final聲明, value可以不斷擴容。
在這裏插入圖片描述

StringBuilder的構造器

和 StringBuffer類似
在這裏插入圖片描述

StringBuilder的常用方法

與StringBuffer類似,就不再累述了

String、StringBuffer、StringBuild效率比較

String:不可變的字符序列;
StringBuffer:可變的字符序列;線程安全的,效率低(相比StringBuffer);
StringBuilder:可變的字符序列;jdk5.0新增的,線程不安全的,效率高;

三者的效率測試

代碼如下`在這裏插入代碼片

package com.StringBuffer;

public class Test {
    public static void main(String[] args) {
        long StartTime = 0l;
        long EndTime = 0L;
        String text ="";
        StringBuffer buffer = new StringBuffer("");
        StringBuilder builder = new StringBuilder("");
        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            buffer.append(i);
        }
        EndTime = System.currentTimeMillis();
        System.out.println("StringBuffer執行的時間爲"+(EndTime-StartTime));

        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            builder.append(i);
        }
        EndTime = System.currentTimeMillis();
        System.out.println("StringBuilder執行的時間爲"+(EndTime-StartTime));

        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
           text += i;
        }
        EndTime = System.currentTimeMillis();
        System.out.println("String執行的時間爲"+(EndTime-StartTime));
    }
}

結果,還是很明顯的:
在這裏插入圖片描述

喜歡就點個贊吧!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章