字符串操作:为什么方法 1 不如方法 2 有效

我有一个问题,我必须以两种不同的方式连接两个或多个字符。方法1如下:


String s = "";

for( int i = 0; i < 10; ++i ){

StringBuffer t = new StringBuffer();

t.append( s );

t.append( i );

t.append( " " );

s = t.toString();

}

第二种方法是:


StringBuffer b = new StringBuffer();

for( int i = 0; i < 10; ++i ){

b.append( i );

b.append( ' ' );

}

String s = b.toString();

在书(Programming interview暴露)中提到,第二种方法更有效地编码。为什么会这样?是不是因为 Stringbuffer 的对象 t 最初不是在 for 循环中重复的。需要澄清一下。


凤凰求蛊
浏览 100回答 3
3回答

有只小跳蛙

方法 1 定义了一个新的 StringBuffer 并在每次迭代时调用 toString(),与方法 2 相比,方法 2 只创建了一次 StringBuffer,并且只调用了一次 toString(),它使用了更多的操作和内存

动漫人物

干得好。我的评论确定了第一种方法的额外开销。String s = "";for( int i = 0; i < 10; ++i ){// create this for each iterationStringBuffer t = new StringBuffer();// extra method call to add string in progresst.append( s );&nbsp;t.append( i );// more overhead appending string than a chart.append( " " );// convert StringBuffer to a string to append back in laters = t.toString();}对于这两种方法,StringBuilder 应该优先于 StringBuffer。使用线程时首选后者,因为它是同步的。因此,如果您不使用线程,请使用 StringBuilder。

胡子哥哥

您的方法 1 消耗了大量不必要的内存,与方法 2 相比,它不是必需的。即使您可以使用 StringBuilder 而不是 StringBuffer ,您也可以阅读 javadoc,了解为什么 StringBuilder 比 StringBuffer 更快 n 以及需要使用的地方什么。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java