Java之StringBuffer的學習

StringBuffer:
            線程安全的可變字符序列
 
 
 面試題:(重點)   StringBuffer和String的區別:
   前者是一個可變的字符序列,後者是不可變的字符序列
   如果從內存角度考慮,String定義的時候,會在常量池中開闢空間,比較耗費內存
   而StringBuffer,字符串緩衝區(裏面存儲的全部都是字符串),它會釋放掉

    

 StringBuffer的構造方法:

 StringBuffer() :無參構造的形式,初始容量16

 StringBuffer(int capacity) :指定容量構造一個字符串緩衝區
 StringBuffer(String str) 構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容
 
 StringBuffer的獲取功能:
  public int length()返回長度
  public int capacity()返回當前容量 (如果超過容量,系統自動分配(存儲字符串的時候,英文的))
    
StringBuffer sb = new StringBuffer("hello   java");
System.out.println(sb.length());

  StringBuffer的添加功能:(實際開發中用的多)
   public StringBuffer append(String/boolean....) :在字符串緩衝區中追加數據(在末尾追加),並且返回字符串緩衝區本身
        public StringBuffer insert(int offset,String str):將當前str字符串添加到指定位置處,它返回字符串緩衝區本身

 StringBuffer的刪除功能:
  

        public StringBuffer deleteCharAt(int index):移除指定位置處的字符..
        public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字符串...

  

 StringBuffer的反轉功能:
   public StringBuffer reverse() :將緩衝區中的字符序列反轉取代,返回它(字符串衝)本身
 
 StringBuffer的截取功能:
  public String substring(int start):從指定位置開始截取,默認截取到末尾,返回值不在是緩衝區本身,而是一個新的字符串
  public String substring(int start,int end) :從指定位置開始到指定位置結束截取,包前不包後,返回值不在是緩衝區本身,而是一個新的字符串

註釋:兩種截取都是取的是截取的部分,而且遵循包前不包後。

  StringBuffer的替換功能:
   public StringBuffer replace(int start,int end,String str) 
   從指定位置到指定位置結束,用新的str字符串去替換,返回值是字符串緩衝區本身
 
  String和StringBuffer之間的相互轉換
        
public class StringBufferTest {  
  
    public static void main(String[] args) {  
          
        //String---StringBuffer   
        String s = "hello";  
//      StringBuffer sb = s ;不行  
//      StringBuffer sb = "hello";  
        // 方式1 :帶參構造,StringBuffer(String str)  
        StringBuffer sb = new StringBuffer(s) ;
        //方式2:可以通過無參構造創建字符串緩衝區對象,給緩衝區中追加內容  
        StringBuffer sb2 = new StringBuffer() ;  
        sb2.append(s) ;  
        System.out.println("sb:"+sb);  
        System.out.println("sb2:"+sb2);  
        System.out.println("----------------------------");  
          
        //StringBuffer---String  
        StringBuffer buffer = new StringBuffer("world") ;  
        //方式1:public String(StringBuffer buffer)分配一個新的字符串,它包含字符串緩衝區參數中當前包含的字符序列  
        String str = new String(buffer) ;  
          
        //方式2:StringBuffer的功能:public String toString()返回此序列中數據的字符串表示形式  
        String str2 = buffer.toString() ;  
          
        System.out.println("str:"+str);  
        System.out.println("str2:"+str2);  
    }  
}  

擴展知識:

1 StringBuffer,String,StringBuilder的區別:
StringBuffer和StringBuilder都是一個可變的字符序列,提供一個緩衝區.(兩者都看做容器)
StringBuffer:線程安全的,同步的,執行效率低
StringBuilder:線程不安全的,不同步的,執行效率高,並且單線程中優先採用StringBuilder
StringBuffer 執行效率雖然低,但是由於String類型,並且他可變的字符序列,提供了緩衝區


2 StringBuffer和數組的區別:

數組:
它是可以存儲多個數據的容器,並且多個數據的類型必須一致
數組長度功能:length屬性

StringBuffer:它是容器,它在緩衝區始終存儲的只能字符串類型的數據
獲取緩衝區的長度:length()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章