簡體   English   中英

StringBuilder.append() 是否應該總是比串聯更受歡迎?

[英]Should StringBuilder.append() be always preferred than concatenation?

我有一些這樣的代碼:

StringBuilder rgba = new StringBuilder();  
for (...){
....
rgba.append(value + ", ");
}

IntelliJ向我顯示以下警告:

string concatenation as argument to 'stringbuilder.append()' call

這里這里和其他來源,我了解到連接實際上是創建一個新的 String object 並且否定了使用StringBuilder的全部意義。
所以IntelliJ建議我使用

rgba.append(value);
rgba.append(", ");  

代替

rgba.append(value + ", ");  

但這真的會更好嗎?
這段代碼會更清晰嗎?
這會使執行更快嗎?

根據 IntelliJ 推理:

報告用作 StringBuffer.append()、StringBuilder.append() 或 Appendable.append() 參數的字符串連接。 這樣的調用可以有利地轉化為對現有 StringBuffer/Builder/Appendable 的鏈式 append 調用,從而節省額外分配 StringBuffer/Builder 的成本。 此檢查忽略編譯時評估的字符串連接,當轉換為鏈式 append 調用時,只會降低性能。

所以,我會說: go !

你所說的是正確的,因為連接和StringBuilder的混合在理論上違背了使用它的觀點,但是我們正在談論的額外性能非常小,除非你的循環有大量的迭代.

就代碼清晰度而言,我認為雙append實際上更清晰,因為無論如何您都在使用它。

我會看到這兩個陳述

Append ", " appended on "value"
Append "value"
Append ", "

其中第二個實際上看起來更簡潔,即使代碼在技術上更長。

在我看來,串聯對於開發人員來說更具可讀性,但 StringBuilder.append 是高性能的

暫無
暫無

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

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