问题

如何在循环后清除Java中的字符串缓冲区,以便下一次迭代使用清除字符串缓冲区?


#1 热门回答(117 赞)

一种选择是使用delete方法,如下所示:

StringBuffer sb = new StringBuffer();
for (int n = 0; n < 10; n++) {
   sb.append("a");

   // This will clear the buffer
   sb.delete(0, sb.length());
}

另一个选项(位清理器)使用setLength(int len)

sb.setLength(0);

有关更多信息,请参见Javadoc


#2 热门回答(40 赞)

重用StringBuffer的最简单方法是使用方法setLength()
public void setLength(int newLength)
你可能有这样的情况

StringBuffer sb = new StringBuffer("HelloWorld");
// after many iterations and manipulations
sb.setLength(0);
// reuse sb

#3 热门回答(15 赞)

你有两个选择:

使用:

sb.setLength(0);  // It will just discard the previous data, which will be garbage collected later.

或使用:

sb.delete(0, sb.length());  // A bit slower as it is used to delete sub sequence.

注意

避免在循环中声明StringBuffer或52760381对象,否则它将在每次迭代时创建新对象。创建对象需要系统资源,空间并且还需要时间。因此,从长远来看,尽可能避免在循环内声明它们。


原文链接