StringBuffer和StringBuilder

字符串緩衝類:因爲String是不可變的,在須要頻繁改變字符對象的狀況下,須要使用可變的字符串緩衝區類。css

特色:java

  • 默認緩衝區的容量是16
  • StringBuffer:線程安全的全部的緩衝區操做方法都是同步的,效率低。

1、添加方法

  • StringBuffer("hcx") 在建立對象的時候賦值
  • append() 在緩衝區的尾部添加新的文本對象
  • insert() 在指定的下標位置添加新的文本對象
StringBuffer sb = new StringBuffer("hcx");
sb.append(true);
sb.append('a');
sb.append(97).append(98).append(new char[]{'b','c'}); // 鏈式編程
System.out.println(sb.toString());// 輸出緩衝區的中文本數據 hcxtruea9798bc
sb = new StringBuffer("hcx");
sb.insert( 2, "java" );
System.out.println( sb.toString() );//hcjavax
複製代碼

2、查看方法

  • toString() 把字符串緩衝類的內容轉成字符串返回。
  • indexOf(String str) 返回第一次出現的指定子字符串在該字符串中的索引。
  • substring(int start) 從開始的位置開始截取字符串
  • capacity() 查看當前字符數組的長度。
StringBuffer sb1 = new StringBuffer("hcxx");
System.out.println(sb1.indexOf("x"));//2
System.out.println(sb1.lastIndexOf("x"));//3
複製代碼

3、修改方法

  • replace(int start int endString str) 使用給定 String 中的字符替換此序列的子字符串中的字符。該子字符串從指定的start處開始,一直到索引end-1處的字符
  • setCharAt(int index char ch) 指定索引位置替換一個字符
  • substring(int start, int end) 根據指定的索引值截取子串。
  • ensureCapacity(int minimumCapacity) 指定StringBuffer內部的字符數組長度的。
  • reverse() 把字符串逆序輸出。
StringBuffer sb2 = new StringBuffer("helloworld");
System.out.println(sb2.replace(2, 6, "java"));//替換掉 llow 包頭不包尾 hejavaorld
sb2.setCharAt(8, 'A');//l-->A
System.out.println(sb2);//hejavaorAd
StringBuffer sb4 = new StringBuffer("helloworld");
System.out.println(sb4.reverse());//dlrowolleh
複製代碼

4、刪除方法

  • delete(int start,int end) start<=char<end 根據指定的開始與結束的索引值刪除對應的內容。 清空緩衝區:delete(0,sb.length())
  • deleteCharAt(int index) 根據指定的索引值刪除一個字符。
StringBuffer sb3 = new StringBuffer("helloworld");
System.out.println(sb3.delete(2, 4));//heoworld
System.out.println(sb3.deleteCharAt(2));//heworld
複製代碼

5、StringBuffer和StringBuilder的對比

使用Stringbuffer無 參的構造函數建立一個對象時,默認的初始容量是多少? 若是長度不夠使用了,自動增加多少倍?編程

StringBuffer底層是依賴了一個字符數組才能存儲字符數據的,該字符串數組默認的初始容量是16, 若是字符數組的長度不夠使用時,自動增加1倍。數組

StringBuffer 與 StringBuilder的相同處與不一樣處:安全

相同點:
    1. 兩個類都是字符串緩衝類。
    2. 兩個類的方法都是一致的。
不一樣點:
    1. StringBuffer是線程安全的,操做效率低 ,StringBuilder是線程非安全的,操做效率高。
    2. StringBufferjdk1.0出現 的,StringBuilderjdk1.5的時候出現的。
複製代碼

推薦使用: StringBuilder,由於操做效率高。app

相關文章
相關標籤/搜索