将StringBuilder附加到另一个StringBuilder

时间:2018-04-12 09:14:23

标签: java string stringbuilder

我写了一些代码,里面有很多字符串创建。为了避免反复创建昂贵的字符串,我使用的是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文档并发现append(StringBuilder stringBuilder)类没有StringBuilder方法,只有append(String string)之前,这一切都很好。

所以我的问题是,这段代码是如何运行的?是否将StringBuilder投射到String

2 个答案:

答案 0 :(得分:6)

StringBuilderpublic StringBuilder append(CharSequence s)方法。 StringBuilder实现CharSequence接口,因此您可以将StringBuilder传递给该方法。

答案 1 :(得分:2)

有很多append()次重载,包括append(CharSequence cs)。字符串是用自己的方法处理的,其他CharSequences没有自己的重载由更普遍的处理。

有趣的是, append(StringBuffer sb)