StringBuilder - 使用连接和使用追加循环

时间:2013-07-07 16:29:10

标签: java string performance stringbuilder

想知道使用它的最佳方法是什么:

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 个答案:

答案 0 :(得分:6)

字符串构建器要快得多,所以不建议连接超过3-4个字符串(在循环之外),并且绝对不在循环中,我建议你这样做:

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

答案 1 :(得分:2)

append的两次单独调用更好。在幕后,在字符串上使用+会导致创建StringBuilder来进行连接。所以,你想要:

  1. 使用+(在动态情况下不起作用)一次性连接所有字符串,或

  2. 对于您正在构建的每个字符串,请使用明确的StringBuilder来调用append(不要在任何地方使用+。)

答案 2 :(得分:1)

使用追加。但是,请注意,如果您执行相对较少的循环(例如10 - 20),那么使用StringBuilder并不重要,您可能看不到任何性能改进。