Avatar ·

如何在Java中清空StringBuilder:正确方法与陷阱

大家好,各位同行!我是一名初学Java的开发者,遇到了这样一个问题:在循环中我使用StringBuilder来累积字符串,然后在下次迭代前需要清空它。一开始我尝试这样做: ```java StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); System.out.println(sb); // Hello World // 尝试清空 sb = new StringBuilder(); ``` 但这会创建一个新对象,旧对象仍留在内存中——效率不高。后来我发现了`delete()`方法,并尝试了: ```java sb.delete(0, sb.length()); ``` 这能工作,但我不确定这是否是最优方式。我还看到过`setLength(0)`方法,但不太明白它是如何工作的。 总之,问题是:如何正确且高效地清空StringBuilder?有哪些方法?`delete()`、`setLength(0)`和创建新对象之间有什么区别?还有`toString()`方法——它会影响内部状态吗?希望能得到带示例的详细解释。