加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-01-31 05:06:30 所属栏目:建站 来源:Hollis
导读:本文,也是对付Java中字符串相干常识的一个增补,首要来先容一下字符串拼接相干的常识。本文基于jdk1.8.0_181。 一、字符串拼接 字符串拼接是我们在Java代码中较量常常要做的工作,就是把多个字符串拼接到一路。 我们都知道,String是Java中一个不行变的类
副问题[/!--empirenews.page--]

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

本文,也是对付Java中字符串相干常识的一个增补,首要来先容一下字符串拼接相干的常识。本文基于jdk1.8.0_181。

一、字符串拼接

字符串拼接是我们在Java代码中较量常常要做的工作,就是把多个字符串拼接到一路。

我们都知道,String是Java中一个不行变的类,以是他一旦被实例化就无法被修改。

不行变类的实例一旦建设,其成员变量的值就不能被修改。这样计划有许多甜头,好比可以缓存hashcode、行使越发便利以及越发安详等。

可是,既然字符串是不行变的,那么字符串拼接又是怎么回事呢?

1、字符串稳固性与字符串拼接

着实,全部的所谓字符串拼接,都是从头天生了一个新的字符串。下面一段字符串拼接代码:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

着实最后我们获得的s已经是一个新的字符串了。如下图

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

s中生涯的是一个从头建设出来的String工具的引用。

那么,在Java中,到底怎样举办字符串拼接呢?字符串拼接有许多种方法,这里简朴先容几种较量常用的。

2、行使+拼接字符串

在Java中,拼接字符串最简朴的方法就是直接行使标记+来拼接。如:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

这里要出格声名一点,有人把Java中行使+拼接字符串的成果领略为运算符重载。着实并不是,Java是不支持运算符重载的。这着实只是Java提供的一个语法糖。后头再具体先容。

运算符重载:在计较机措施计划中,运算符重载(英语:operator overloading)是多态的一种。运算符重载,就是对已有的运算符从头举办界说,赋予其另一种成果,以顺应差异的数据范例。

语法糖:语法糖(Syntactic sugar),也译为糖衣语法,是由英国计较机科学家彼得·兰丁发现的一个术语,指计较机说话中添加的某种语法,这种语法对说话的成果没有影响,可是更利便措施员行使。语法糖让措施越发简捷,有更高的可读性。

3、concat  

除了行使+拼接字符串之外,还可以行使String类中的要领concat要领来拼接字符串。如:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

4、StringBuffer

关于字符串,Java中除了界说了一个可以用来界说字符串常量的String类以外,还提供了可以用来界说字符串变量的StringBuffer类,它的工具是可以扩充和修改的。

行使StringBuffer可以利便的对字符串举办拼接。如:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

5、StringBuilder  

除了StringBuffer以外,尚有一个类StringBuilder也可以行使,其用法和StringBuffer相同。如:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

6、StringUtils.join  

除了JDK中内置的字符串拼接要领,还可以行使一些开源类库中提供的字符串拼接要领名,如apache.commons中提供的StringUtils类,个中的join要领可以拼接字符串。

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

这里简朴说一下,StringUtils中提供的join要领,最首要的成果是:将数组或荟萃以某拼接符拼接到一路形成新的字符串,如:

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

而且,Java8中的String类中也提供了一个静态的join要领,用法和StringUtils.join相同。

以上就是较量常用的五种在Java种拼接字符串的方法,那么到底哪种更好用呢?为什么阿里巴巴Java开拓手册中不提议在轮回体中行使+举办字符串拼接呢?

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

(阿里巴巴Java开拓手册中关于字符串拼接的规约)

接下来我们就来说明一下以上五种方法的底层道理,再来说明到底哪种更好。

二、行使+拼接字符串的实现道理

前面提到过,行使+拼接字符串,着实只是Java提供的一个语法糖, 那么,我们就来解一解这个语法糖,看看他的内部道理到底是怎样实现的。

照旧这样一段代码。我们把他天生的字节码举办反编译,看当作果。

为什么阿里巴巴不提议在for轮回中行使+举办字符串拼接?

(编辑:河北网)

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

热点阅读