在for循环中确定StringBuilder的范围

时间:2010-04-14 17:57:09

标签: java string

您何时想要在for循环中对String Builder进行范围化?

示例代码:

....
for (int i=0; i<cnt; i++) {
    ....
    {
        StringBuilder sb = new StringBuilder();
        sb.append(",");
        ....
    }
}
....

3 个答案:

答案 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。)