關於StringBuilder項目中運用。

之前在書寫項目類的時候,一般的字符串類型 都是用String 來進行表示的,但是在用大量字符進行拼接的時候,需要來回的增加,一味的利用String進行增加的話,會增加內存的負擔以及編譯的煩惱。

下面是百度裏面的解釋:

如果可能,建議優先採用該類,因爲在大多數實現中,它比 StringBuffer 要快。 在 StringBuilder 上的主要操作是 append 和 insert 方法。每個方法都能有效地將給定的數據轉換成字符串,然後將該字符串的字符添加或插入到字符串生成器中。append 方法始終將這些字符添加到生成器的末端;而 insert 方法則在指定的點添加字符。 例如,如果 z 引用一個當前內容爲“start”的字符串生成器對象,則該方法調用 z.append(“le”) 將使字符串生成器包含“startle”,而 z.insert(4, “le”) 將更改字符串生成器,使之包含“starlet”。 通常,如果 n引用 StringBuilder 的實例(StringBuilder n = new StringBuilder()?,則 n.append(x) 和 n.insert(n.length(), x) 具有相同的效果。 每個字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的長度沒有超出此容量,就無需分配新的內部緩衝區。如果內部緩衝區溢出,則此容量自動增大。 將StringBuilder的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用StringBuffer。 [1] StringBuilder類可以用於在無需創建一個新的字符串對象情況下修改字符串。StringBuilder不是線程安全的,而StringBuffer是線程安全的。但StringBuilder在單線程中的性能比StringBuffer高。

代碼:

創建Stringbuilder對象
StringBuilder strB = new StringBuilder();
System.out.println("StringBuilder:"+strB.append("ch").append("111").append('c'));
//return "StringBuilder:ch111c"

  • 總結:

1、在字符串不經常發生變化的業務場景優先使用String(代碼更清晰簡潔)。如常量的聲明,少量的字符串操作(拼接,刪除等)。

2、在單線程情況下,如有大量的字符串操作情況,應該使用StringBuilder來操作字符串。不能使用String"+"來拼接而是使用,避免產生大量無用的中間對象,耗費空間且執行效率低下(新建對象、回收對象花費大量時間)。如JSON的封裝等。

3、在多線程情況下,如有大量的字符串操作情況,應該使用StringBuffer。如HTTP參數解析和封裝等。

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