java 如何提高字符串拼接速度

 我来答
zoupeijun990
2012-03-05 · 超过15用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:44.2万
展开全部
使用StringBuffer,或者StringBuilder..都是可以改变是字符串。
willower
2012-03-05 · TA获得超过155个赞
知道答主
回答量:27
采纳率:0%
帮助的人:45.1万
展开全部
java1.0开始就有的StringBuffer,以及后期参考.net后在1.5版本增加的StringBuilder都行
当然StringBuilder是后期参考.net优化过的,性能比StringBuffer更好
然后调用他们的append方法,来追加,达到拼接字符串的目的,最后通过他们的toString方法转回String类型
例如:StringBuffer sb = new StringBuffer("a");
sb.append("b");
sb.append("c");
sb.append("d");
String s = sb.toString();
System.out.println(s);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邗启3V
2012-03-05 · TA获得超过7271个赞
知道大有可为答主
回答量:1413
采纳率:100%
帮助的人:1438万
展开全部
要实现高效字符串操作,在工作中尽量不要用String
都是用StringBuilder ,速度快 ,只是线程不安全

也有用StringBuffer 虽然线程安全,但速度还是慢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
那十无忧
2012-03-06 · 超过17用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:33.2万
展开全部
应该使用 StringBuilder

为什么不用 StringBuffer,因为StringBuffer的每一次操作之前都要取得同步锁,每一次操作之后都要释放同步锁。
看下面这个例子:

for(int i=0; i<10000; i++)
buffer.append(i).append(", ");

这里获取了10000次锁,释放了10000次锁,那么,它真的实现了同步的目的吗?如果在这个循环运行过程中,有另一个进程对buffer进行了这样的操作: buffer.append("some string");
那么这个"some string" 会被插入到某两个数字之间,如果你想要前面那个for循环不受干扰地完成,还是要在外面加锁:

synchronized(buffer) {
for(int i=0; i<10000; i++)
buffer.append(i).append(", ");
}

所以StringBuffer这个类的设计是有缺陷的,是由于当时受限于人们对API设计理论的理解,类的设计者不明白这样一个道理:一个类不应该自己实现同步,而应该把同步的工作交给用户,因为“用户对于什么时候应该同步,应该怎么同步,通常比类的设计者知道得更清楚,并且在不同的环境下用户可能对如何同步有不同的需求”。

所以在新的代码中应该尽量用 StringBuilder 而不要用 StringBuffer。

同理,应该用 ArrayList 而不要用 Vector。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lijf_2010
2012-03-14
知道答主
回答量:2
采纳率:0%
帮助的人:3324
展开全部
StringBuilder和StringBuffer
推荐用StringBuilder。原因参考“那十无忧”的回答!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fvlohdb35984
2012-03-07
知道答主
回答量:5
采纳率:0%
帮助的人:3.5万
展开全部
java
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式