4 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
關(guān)鍵是你是在一個(gè)地方寫一個(gè)連接還是隨著時(shí)間累積它。
對(duì)于您給出的示例,明確使用StringBuilder沒有意義。(查看第一個(gè)案例的編譯代碼。)
但是如果你在循環(huán)中構(gòu)建一個(gè)字符串,請(qǐng)使用StringBuilder。
為了澄清,假設(shè)hugeArray包含數(shù)千個(gè)字符串,代碼如下:
...String result = "";for (String s : hugeArray) { result = result + s;}
與以下相比,這是非常浪費(fèi)時(shí)間和內(nèi)存的:
...StringBuilder sb = new StringBuilder();for (String s : hugeArray) { sb.append(s);}String result = sb.toString();

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
我更喜歡:
String.format( "{a: %s, b: %s, c: %s}", a, b, c );
...因?yàn)樗喍桃鬃x。
除非你在具有非常高重復(fù)次數(shù)的循環(huán)中使用它并測(cè)量了性能差異,否則我不會(huì)對(duì)速度進(jìn)行優(yōu)化。
我同意,如果你必須輸出很多參數(shù),這個(gè)表格會(huì)讓人感到困惑(就像其中一條評(píng)論所說)。在這種情況下,我將切換到一個(gè)更易讀的形式(可能使用apache-commons的ToStringBuilder - 取自matt b的答案)并再次忽略性能。
添加回答
舉報(bào)