Jon*_*Jon 131
一种选择是使用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());
}
Run Code Online (Sandbox Code Playgroud)
另一个选项(位清理器)使用setLength(int len):
sb.setLength(0);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Javadoc:
小智 46
重用的最简单方法StringBuffer是使用该方法setLength()
public void setLength(int newLength)
你可能有这样的情况
StringBuffer sb = new StringBuffer("HelloWorld");
// after many iterations and manipulations
sb.setLength(0);
// reuse sb
Run Code Online (Sandbox Code Playgroud)
Adi*_*ngh 18
您有两种选择:
使用:
sb.setLength(0); // It will just discard the previous data, which will be garbage collected later.
Run Code Online (Sandbox Code Playgroud)
或使用:
sb.delete(0, sb.length()); // A bit slower as it is used to delete sub sequence.
Run Code Online (Sandbox Code Playgroud)
避免在循环中声明StringBuffer或StringBuilder对象,否则它将在每次迭代时创建新对象.创建对象需要系统资源,空间并且还需要时间.因此,从长远来看,尽可能避免在循环内声明它们.
我建议为每次迭代创建一个新的StringBuffer(甚至更好的StringBuilder).性能差异实际上可以忽略不计,但您的代码将更短更简单.
public void clear(StringBuilder s) {
s.setLength(0);
}
Run Code Online (Sandbox Code Playgroud)
用法:
StringBuilder v = new StringBuilder();
clear(v);
Run Code Online (Sandbox Code Playgroud)
为了提高可读性,我认为这是最好的解决方案。