StringBuilder(或 StringBuffer)

 

一、運行速度比較:java

  • StringBuilder > StringBuffer(線程安全) > String

二、String類是不可變類(final修飾),封裝的不可變數組數組

  • 全部字符都是存儲在這個final 類型的char數組中
  • 字符串操做,返回的結果是從新new出來的對象

三、 StringBuffer類封裝的是可變數組,而且線程安全安全

四、StringBuilder類是非線程安全、可變字符串封裝類app

五、抽象類AbstractStringBuilderui

  • StringBuffer和StringBuilder都繼承自這個抽象類
  • StringBuilder和StringBuffer的方法實現基本上一致
  • 不一樣的是StringBuffer類的方法前多了個synchronized關鍵字

六、StringBuilder和StringBuffer線程

  • append,insert,delete方法最根本上都是調用System.arraycopy()
  • substring(int, int)方法是經過從新new String()::StringBuilder和String沒區別
  • 兩者大部分方法均調用父類AbstractStringBuilder的實現
  • 擴容機制首先是把容量變爲原來容量的2倍加2
  • StringBuilder和StringBuffer的默認容量都是16,預先估計好字符串的大小避免擴容時間消耗

七、System.arraycopy()code

​
/**
*src:源數組; 
*srcPos:源數組要複製的起始位置; 
*dest:目的數組; 
*destPos:目的數組放置的起始位置; 
*length:複製的長度。 
*注意:src and dest都必須是同類型或者能夠進行轉換類型的數組.
*/
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

​
相關文章
相關標籤/搜索