加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

为什么阿里巴巴不建议在for循环中使用+进行字符串拼接?

发布时间:2019-02-05 10:36:45 所属栏目:优化 来源:Hollis
导读:副标题#e# 本文,也是对于Java中字符串相关知识的一个补充,主要来介绍一下字符串拼接相关的知识。本文基于jdk1.8.0_181。 一、字符串拼接 字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。 我们都知道,String是Java中一个

反编译后的内容如下,反编译工具为jad。

为什么阿里巴巴不建议在for循环中使用+进行字符串拼接?

通过查看反编译以后的代码,我们可以发现,原来字符串常量在拼接过程中,是将String转成了StringBuilder后,使用其append方法进行处理的。

那么也就是说,Java中的+对字符串的拼接,其实现原理是使用StringBuilder.append。

三、concat是如何实现的

我们再来看一下concat方法的源代码,看一下这个方法又是如何实现的。

为什么阿里巴巴不建议在for循环中使用+进行字符串拼接?

这段代码首先创建了一个字符数组,长度是已有字符串和待拼接字符串的长度之和,再把两个字符串的值复制到新的字符数组中,并使用这个字符数组创建一个新的String对象并返回。

通过源码我们也可以看到,经过concat方法,其实是new了一个新的String,这也就呼应到前面我们说的字符串的不变性问题上了。

四、StringBuffer和StringBuilder

接下来我们看看StringBuffer和StringBuilder的实现原理。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!