簡體   English   中英

何時以及如何有效地使用StringBuilder / Buffer?

[英]When and how to use StringBuilder/Buffer efficiently?

我想創建一個字符串,它通過連接大約3000個其他字符串。 我聽說使用如此多的字符串可能效率低下,因為它們位於某種池中,並且可能在不需要它們后立即被GC拾取。

這是最好的方式嗎 -

StringBuilder sb = new StringBuilder("");

for(String s : arrayWith3000Strings)
{
  sb.append(s);
}

或者我應該將所有字符串連接成一個字符串?

這絕對是首選StringBuilder的情況。

字符串是“不可變的”。 修改字符串的任何操作(包括“append”)都會創建一個新字符串。 使用stringbuilder可以避免這種費用。

此鏈接(許多之一)進一步解釋:

是的,你的代碼很好。

即使您使用字符串連接,它也會創建新的String objects因為字符串是不可變的。

StringBuffer具有比StringBuilder更好的性能,但StringBuffer不是線程安全的!

編輯:當然,反之亦然:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM