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

最佳实践/性能:将StringBuilder.append与String.concat混合

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

最佳实践/性能:将StringBuilder.append与String.concat混合

+
算子

String s = s1 + s2

在幕后将其翻译为:

String s = new StringBuilder(s1).append(s2).toString();

想象一下,如果您在

s1 + s2
这里,它会增加多少额外的工作:

stringBuilder.append(s1 + s2)

代替:

stringBuilder.append(s1).append(s2)

多个字符串
+

值得注意的是:

String s = s1 + s2 + s3 + ... +sN

转换为:

String s = new StringBuilder(s1).append(s2).append(s3)...apend(sN).toString();

concat()

String s = s1.concat(s2);

String
创建
char[]
同时适合
s1
和的数组
s2
。将副本
s1
s2
内容复制到此新数组。实际上需要的工作量少于
+
操作员。

StringBuilder.append()

维护一个内部

char[]
数组,该数组在需要时会增长。
char[]
如果内部空间足够大,则不会创建任何额外的空间。

stringBuilder.append(s1.concat(s2))

也表现不佳,因为

s1.concat(s2)
创建一个额外的
char[]
数组和副本
s1
,并
s2
给它只是新的数组内容复制到内部
StringBuilder``char[]

话虽如此,您应该一直使用

append()
并附加原始字符串(您的第一个代码段是正确的)。



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

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

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