Java筆記 - StringBuffer類

StringBuffer就是字符串緩衝區,是用於存儲數據的容器。緩衝區裏面的容器其實還是數組,只不過是把數組封裝了,對外提供方法。緩衝區構造函數StringBuffer()構造一個不帶字符的字符串緩衝區,初始容量爲16個字符。就是說只要一new對象,就產生了一個長度爲16的數組。

StringBuffer特點:
1. 長度是可變的
2. 可以存儲不同類型數據
3. 最終要轉成字符串進行使用
4. 可以對字符串進行修改

可變長度數組的原理:
雖然字符串緩衝區的長度可變,但是數組的長度是不變的。字符串緩衝區的初始長度爲16,如果出現了17個字符,系統就會複製一個數組,長度是原先的兩倍,然後把原來的16個字符按照固定的位置原封不動挪到新數組上,然後再給第17個角標元素賦值。

  • 構造方法
    StringBuffer():構造一個初始容量爲16個字符的字符串緩衝區
    StringBuffer(String str):構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容

  • 一般方法

    1. 添加
      StringBuffer append(date):可以接收不含byte和short的基本數據類型。將這些數據轉換成字符串,然後將這些字符添加到緩衝區末端
      StringBuffer insert(int offset,date):在指定的角標處添加字符
    2. 刪除
      StringBuffer delete(int start,int end):包含開始,不包含結尾
      StringBuffer deleteCharAt(int index):刪除指定角標的元素
    3. 查找
      char charAt(int index):查找字符串緩衝區某角標的元素
      int indexOf(String str):查找字符串在字符串緩衝區中的角標,如果不存在則返回-1
      int indexOf(String str, int fromIndex):從某角標開始查找字符串在字符串緩衝區中的位置
      int lastIndexOf(String str):倒敘查找
      int lastIndexOf(String str, int fromIndex):從某位置倒敘查找
    4. 修改
      StringBuffer replace(int start, int end, String str):
      void setCharAt(int index, char ch):
      void setLength(int newLength):
      例:

      StringBuffer sb = new StringBuffer("abcda");
      sb.insert(3, "ab");
      System.out.println(sb);
      System.out.println(sb.charAt(2));
      System.out.println(sb.indexOf("ab"));
      System.out.println(sb.indexOf("ab",  2));
      System.out.println(sb.lastIndexOf("ab",2));
      sb.replace(1, 3, "nba");
      System.out.println(sb);
      sb.setCharAt(2, 'q');
      System.out.println(sb);
      sb.setLength(10);
      System.out.println(sb);
      sb.delete(0,sb.length());//清空緩衝區
      System.out.println(sb);
      

      輸出結果:
      abcabda
      c
      0
      3
      0
      anbaabda
      anqaabda
      anqaabda□□
      //清空緩衝區

StringBuilder
StringBuffer從JDK1.0版本開始,線程安全,運行速度較慢
StringBuilder從JDK1.5版本開始,線程不安全,運行速度快,優先使用StringBuilder

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