您何时想要在for循环中对String Builder进行范围化?
示例代码:
....
for (int i=0; i<cnt; i++) {
....
{
StringBuilder sb = new StringBuilder();
sb.append(",");
....
}
}
....
答案 0 :(得分:2)
好吧,除了在循环中创建新对象的轻微代码气味之外,我可以看到你在for循环中创建一个StringBuilder,为for循环中的每个项生成一个长字符串。
但是,您也可以将其范围限制在for循环之外,并在每次传递时清除它。取决于您认为如何更容易阅读。
答案 1 :(得分:0)
如果您与其他外部StringBuilder组合使用。
StringBuilder sbAll = new StringBuilder();
for (int i=0; i<cnt; i++) {
....
{
StringBuilder sb = new StringBuilder();
sb.append(",");
sbAll.append(sb.toString());
}
}
问题是你在循环中做了什么,这很可爱,需要一个单独的StringBuilder?我想这是可能的。
答案 2 :(得分:0)
如果内部循环后面的代码正在执行需要大量内存的代码,并且内部循环中的StringBuilder也很大,那么您可能希望将其置于本地作用域以便GC可以自由地使用它记忆之后。否则我同意JBristow它应该在循环外限并且在内循环开始时清除(并且可能是trimToSize()'d。)