将一个 StringBuilder 追加到另一个 StringBuilder

9

我写了一些代码,其中有很多字符串创建。为了避免重复进行昂贵的字符串创建,我正在使用 Java 的 StringBuilder 类。

我的代码类似于这样:

public String createString(){
  StringBuilder stringBuilder = new StringBuilder();
  for(int i = 0; i < Integer.MAX_VALUE ; i++){ //its not actually this, but it's a large loop. 
      stringBuilder.append(appendString())
  }
  return stringBuilder.toString();
}
appendString 方法也会实例化一个 StringBuilder 并对其进行追加。
为了节省时间,我注意到可以使我的 appendString 方法返回一个 StringBuilder 而不是一个 String,这避免了使用 .toString() 方法返回 stringBuilder,如下所示:
public StringBuilder appendString(){
  StringBuilder appendBuilder = new StringBuilder();
  appendBuilder.append("whatever");
  return appendBuilder;
}

一切都很好,直到我查看了 StringBuilder 文档,发现在 StringBuilder 类上没有 append(StringBuilder stringBuilder) 方法,只有一个 append(String string) 方法。

所以我的问题是,这段代码是如何运行的?它是否仍然将 StringBuilder 强制转换为 String

2个回答

22

StringBuilder有一个public StringBuilder append(CharSequence s)方法。由于StringBuilder实现了CharSequence接口,所以您可以将StringBuilder传递给该方法。


3

有很多append()重载方法,其中包括append(CharSequence cs)。字符串在自己的方法中处理,没有自己的重载方法的其他CharSequences则由更通用的方法处理。

有趣的是还有一个append(StringBuffer sb)方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接