2013-07-07 40 views
1

想知道什麼是使用它的最佳方式:StringBuilder的 - 使用級聯VS使用追加中環

StringBuilder query = new StringBuilder(" Select * from mytable t where "); 
for (Object object : objects) { 
    query.append(" t.field = " + object.field); // this one OR 
    query.append(object.field);    // this one? 
} 

不知道推薦使用哪一個。

+3

這裏還'query.append( 「t.field =」).append(object.field);' – Pshemo

+0

StringBuilder的似乎在此特定情況下矯枉過正。 – Tarik

回答

6

字符串生成器的速度要快得多,所以不建議做多串連不如說是3-4字符串(環外),而絕對不是在循環中,我建議你這樣做:

for (Object object : objects) { 
    query.append(" t.field = "); 
    query.append(object.field); 
} 
1

使用追加。但是,請注意,如果您執行的循環相對較少(例如10-20),那麼使用StringBuilder並不重要,並且您可能看不到任何性能改進。

2

兩個分開的電話append比較好。在幕後,在字符串上使用+會導致創建StringBuilder以進行串聯。所以,你想要麼:

  1. 串聯所有的一次性字符串中使用+(不在動態情況下工作),或

  2. 使用一個明確的StringBuilder一起append通話對於你正在建造的每一小塊琴絃(不要在任何地方使用+)。