Java StringBuilder-使用串联与在循环中使用附加
想知道最好的使用方法是什么:Java StringBuilder-使用串联与在循环中使用附加,java,string,performance,stringbuilder,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 on
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-4个字符串(在循环之外)的串联,也不建议使用循环,我建议您这样做:
for ( Object object : objects ) {
query.append(" t.field = ");
query.append( object.field );
}
字符串生成器的速度要快得多,因此不建议对超过3-4个字符串(在循环之外)进行串联,也不建议在循环中进行串联,我建议您这样做:
for ( Object object : objects ) {
query.append(" t.field = ");
query.append( object.field );
}
使用append。但是,请注意,如果您执行的循环相对较少(比如10-20),那么使用StringBuilder并不重要,您可能看不到任何性能改进。使用append。但是,请注意,如果您执行的循环相对较少(比如10-20),那么使用StringBuilder并不重要,您可能看不到任何性能改进。对
append的两个单独调用更好。在幕后,对字符串使用+
会导致创建一个StringBuilder
来进行连接。因此,您希望:
使用+
(在动态情况下不起作用)一次连接所有字符串,或者
使用显式的StringBuilder
,对正在构建的字符串的每一小段调用append
(不要在任何地方使用+
)
对append
的两个单独调用更好。在幕后,对字符串使用+
会导致创建一个StringBuilder
来进行连接。因此,您希望:
使用+
(在动态情况下不起作用)一次连接所有字符串,或者
使用显式的StringBuilder
,对正在构建的字符串的每一小段调用append
(不要在任何地方使用+
)
还有query.append(“t.field=”).append(object.field)代码>StringBuilder在这种特殊情况下似乎有点过头了。还有query.append(“t.field=”).append(object.field)在这种特殊情况下,代码>StringBuilder似乎有些过分。