3 回答
TA贡献1824条经验 获得超8个赞
方法 1 定义了一个新的 StringBuffer 并在每次迭代时调用 toString(),与方法 2 相比,方法 2 只创建了一次 StringBuffer,并且只调用了一次 toString(),它使用了更多的操作和内存
TA贡献1815条经验 获得超10个赞
干得好。我的评论确定了第一种方法的额外开销。
String s = "";
for( int i = 0; i < 10; ++i ){
// create this for each iteration
StringBuffer t = new StringBuffer();
// extra method call to add string in progress
t.append( s );
t.append( i );
// more overhead appending string than a char
t.append( " " );
// convert StringBuffer to a string to append back in later
s = t.toString();
}
对于这两种方法,StringBuilder 应该优先于 StringBuffer。使用线程时首选后者,因为它是同步的。因此,如果您不使用线程,请使用 StringBuilder。
TA贡献1825条经验 获得超6个赞
您的方法 1 消耗了大量不必要的内存,与方法 2 相比,它不是必需的。即使您可以使用 StringBuilder 而不是 StringBuffer ,您也可以阅读 javadoc,了解为什么 StringBuilder 比 StringBuffer 更快 n 以及需要使用的地方什么。
添加回答
举报