当前位置: 首页 > 后端技术 > Java

Java字符串拼接方法及区别

时间:2023-04-01 20:43:07 Java

1.拼接方式常用的拼接方式有四种:(1)使用符号'+'进行拼接(2)String类中的concat方法进行拼接(3)使用StringBuffer进行拼接(4)使用StringBuilder进行拼接(5)StringUtils。加入2。使用选项。如果只是简单的字符串拼接,不在循环体内,直接用+就可以了。如果在for循环中进行字符串拼接,可以考虑使用StringBuilder和StringBuffer进行并发场景下的字符串拼接,应该使用StringBuffer,而不是StringBuilder。如果通过List进行字符串拼接,可以考虑使用StringUtils.join和StringJoiner3。细节差异3.1'+'拼接原理:使用+字符串拼接其实只是Java提供的一个语法糖。它的实现原理是StringBuilder.append//使用符号'+'拼接字符串Stringhollis=wechat+","+introduce;//上面代码的反编译结果Stringhollis=(newStringBuilder()).append(微信).append(",").append(介绍).toString();从反编译的代码来看,每次用+拼接字符串都是新建一个StringBuilder,然后把String转成StringBuilder,然后append。注意:如果在for循环中使用+拼接字符串,会频繁new一个对象,不仅耗时,还会造成内存资源的浪费。根据阿里巴巴的Java开发手册建议:在循环体中,字符串连接方法应该使用StringBuilder的append方法来扩展,而不是+。3.2String类中concat方法的用法:Stringhollis="wechat".concat(",").concat("introduce");原理:concat方法首先创建一个字符数组,其长度为现有字符串和待拼接字符串的长度之和,然后将两个字符串的值复制到一个新的字符数组中,并使用这个字符数组创建一个新的String对象并返回它。在concat方法之后,实际上new了一个String,这也呼应了我们前面说的字符串的不变性。3.3StringBuffer和StringBuilder原理:StringBuffer和StringBuilder都继承了AbstractStringBuilder类,在AbstractStringBuilder类中定义了一个字符数组char[]值。与String类不同,它没有final修饰符,因此可以被修饰。:StringBuffer和StringBuilder最大的区别是StringBuffer是线程安全的。StringBuffer使用synchronized声明,重写了AbstractStringBuilder类中的一些方法,这也导致StringBuffer的时间效率没有StringBuilder高。3.4StringUtils.join原理:StringUtils.join是通过StringBuffer实现的,其主要作用是将数组或集合用一个拼接字符拼接起来形成一个新的字符串。3.5StringJoiner原理:StringJoiner是java.util包中的一个类,用于构造以分隔符(可选)分隔的字符序列,可以从提供的前缀开始,以提供的后缀结束。它的实现原理也依赖于StringBuilder类