循环后清除字符串缓冲区/构建器
如何在循环后清除Java中的字符串缓冲区,以便下一次迭代使用明确的字符串缓冲区?
一种选择是使用删除方法如下:
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了解更多信息:
重用StringBuffer
最简单的方法是使用方法setLength()
public void setLength(int newLength)
你可能有这样的情况
StringBuffer sb = new StringBuffer("HelloWorld");
// after many iterations and manipulations
sb.setLength(0);
// reuse sb
你有两个选择:
可以使用:
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
或StringBuilder
对象,否则它会在每次迭代时创建新对象。 创建对象需要系统资源和空间,同时也需要时间。 因此,长期来看,如果可能的话,避免在循环中声明它们。