栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:String concat vs StringBuilder-已优化,所以我该怎么办?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:String concat vs StringBuilder-已优化,所以我该怎么办?

我认为

StringBuilder
vs 的使用
+
确实取决于您所使用的上下文。

通常使用JDK 1.6及更高版本,编译器会使用自动将字符串连接在一起

StringBuilder

String one = "abc";String two = "xyz";String three = one + two;

它将编译

String three
为:

String three = new StringBuilder().append(one).append(two).toString();

这非常有帮助,为我们节省了一些运行时间。但是,此过程并不总是最佳的。举个例子:

String out = "";for( int i = 0; i < 10000 ; i++ ) {    out = out + i;}return out;

如果我们编译为字节码,然后反编译生成的字节码,则会得到类似以下内容的结果:

String out = "";for( int i = 0; i < 10000; i++ ) {    out = new StringBuilder().append(out).append(i).toString();}return out;

编译器已经优化了内部循环,但是肯定没有进行最佳的优化。为了改善我们的代码,我们可以使用:

StringBuilder out = new StringBuilder();for( int i = 0 ; i < 10000; i++ ) {    out.append(i);}return out.toString();

现在,这比编译器生成的代码更理想,因此,在需要高效代码的情况下,肯定需要使用

StringBuilder
/
StringBuffer
类编写代码。当前的编译器不能很好地处理循环中的串联字符串,但是将来可能会改变。

您需要仔细查看以查看需要手动应用的位置,

StringBuilder
并尝试在不会降低代码可读性的位置使用它。

注意:我使用JDK
1.6编译了代码,然后使用该

javap
程序反编译了该代码,该程序吐出了字节代码。它很容易解释,并且在尝试优化代码时经常是有用的参考。编译器确实会在后台更改您的代码,因此查看它的作用总是很有趣!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号