将一个 StringBuilder 附加到另一个 StringBuilder
Appending a StringBuilder to another StringBuilder
我写了一些代码,其中有很多字符串创建。为了尽量避免一遍又一遍地创建昂贵的字符串,我使用了 java StringBuilder
class。
我的代码有点像这样:
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
方法 return 成为 StringBuilder
,而不是 String
,这样可以避免 returning stringBuilder 使用 .toString()
方法,如下所示:
public StringBuilder appendString(){
StringBuilder appendBuilder = new StringBuilder();
appendBuilder.append("whatever");
return appendBuilder;
}
这一切都很好,直到我查看 StringBuilder
文档并意识到 StringBuilder
class 上没有 append(StringBuilder stringBuilder)
方法,只有 [=22] =].
所以我的问题是,这段代码如何 运行?无论如何它都会将 StringBuilder
转换为 String
吗?
StringBuilder
有一个 public StringBuilder append(CharSequence s)
方法。 StringBuilder
实现了 CharSequence
接口,因此您可以将 StringBuilder
传递给该方法。
有很多 append()
重载,包括 append(CharSequence cs)
。字符串在它们自己的方法中处理,其他 CharSequences
没有自己的重载由更通用的方法处理。
有趣的是是一个append(StringBuffer sb)
。
我写了一些代码,其中有很多字符串创建。为了尽量避免一遍又一遍地创建昂贵的字符串,我使用了 java StringBuilder
class。
我的代码有点像这样:
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
方法 return 成为 StringBuilder
,而不是 String
,这样可以避免 returning stringBuilder 使用 .toString()
方法,如下所示:
public StringBuilder appendString(){
StringBuilder appendBuilder = new StringBuilder();
appendBuilder.append("whatever");
return appendBuilder;
}
这一切都很好,直到我查看 StringBuilder
文档并意识到 StringBuilder
class 上没有 append(StringBuilder stringBuilder)
方法,只有 [=22] =].
所以我的问题是,这段代码如何 运行?无论如何它都会将 StringBuilder
转换为 String
吗?
StringBuilder
有一个 public StringBuilder append(CharSequence s)
方法。 StringBuilder
实现了 CharSequence
接口,因此您可以将 StringBuilder
传递给该方法。
有很多 append()
重载,包括 append(CharSequence cs)
。字符串在它们自己的方法中处理,其他 CharSequences
没有自己的重载由更通用的方法处理。
有趣的是是一个append(StringBuffer sb)
。