当前位置: 首页 > news >正文

Java字符串常见拼接方式

目录

+ 最常见的方式

StringBuilder.append()和StringBuffer.append()

String类下的cocat()方法

String类下的join()方法

StringUtils.join

项目中使用

不建议在 for 循环中使用 “+” 进行字符串拼接

通过字符串连接,可以将两个或多个字符串、字符、整数和浮点数等类型的数据连成一个更大的字符串。

+ 最常见的方式

“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。

在使用“+”运算符连接字符串和 int 型(或 double 型)数据时,“+”将 int(或 double)型数据自动转换成 String 类型。

StringBuilder.append()和StringBuffer.append()

先有StringBuffer后有StringBuilder,两者就像是孪生双胞胎,该有的都有,只不过大哥StringBuffer,大部分方法都经过synchronized修饰,所以StringBuffer是线程安全的,但是它效率就相对StringBuilder较低。

String类下的cocat()方法

如果拼接的字符串是null,concat会抛出NullPointerException。如果拼接的字符串是一个空字符串(“”),那么concat的效率要更高。如果拼接的字符串非常多,concat的效率就会下降,因为创建的字符串对象越多,开销越大。

str = str.concat(ing)

concat() 方法一次只能连接两个字符串,如果需要连接多个字符串,需要调用多次 concat() 方法。

String cn = "中国";
System.out.println(cn.concat("北京").concat("海淀区").concat("人民公园"));

 输出结果

中国北京海淀区人民公园

String类下的join()方法

JDK 1.8 提供了一种新的字符串拼接方法:String 类增加了一个静态方法 join。

//第一个参数为字符串连接符
String.join("","hello","world");

输出结果

helloworld

StringUtils.join

项目中处理字符串的时候,经常会用到这个类——org.apache.commons.lang3.StringUtils,该类的 join 方法是字符串拼接的一种新姿势。

String str = "hello";
String ing = "world";
StringUtils.join(str, ing);

项目中使用

前端是List<String>传过来的,保存到数据库需要用,拼接的字符串

String.join()方法,第一个参数为字符串连接符

String aaa = String.join(",",listString)

前端传List<Integer>,保存到数据库是用,拼接的字符串

String aaa = listInteger.stream.map(String::valueOf).collect(Collectors.joining(","))

数据库是用,拼接的一个字段,转到前端List<String>

List<String>listString = Array.asList(itemString.spit(","));

数据库是字符串的数字,"1,2,3",传给前端需要是List<Integer>

List<Integer> listInteger = (Arrays.asList(itemString.split(",")).stream().map(Integer::parseInt).collect(Collectors.toList()));

不建议在 for 循环中使用 “+” 进行字符串拼接

第一段,for 循环中使用 “+” 操作符。

String result = "";
for (int i = 0; i < 100000; i++) {result += "六六六";
}

第二段,for 循环中使用 append。

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {sb.append("六六六");
}

这两段代码分别会耗时测试结果如下:
①第一段代码执行完的时间为 6212 毫秒
②第二段代码执行完的时间为 1 毫秒

第一段的 for 循环中创建了大量的 StringBuilder 对象,而第二段代码至始至终只有一个 StringBuilder 对象。所以不建议在 for 循环中使用 “+” 进行字符串拼接。

http://www.lryc.cn/news/6386.html

相关文章:

  • 商城业务:购物车
  • 计算机网络学习笔记(一)
  • 【单目标优化算法】烟花优化算法(Matlab代码实现)
  • 微服务项目【秒杀商品展示及商品秒杀】
  • DIDL3_模型选择、复杂度、过欠拟合的相关概念
  • Android 9.0 去除锁屏界面及SystemUI无sim卡拨打紧急电话控件显示功能实现
  • AntDB-M设计之内存结构
  • 互联网舆情监测公司监测哪些内容,TOOM北京舆情监测公司
  • 一篇文章带你熟练使用Ansible中的playbook
  • HashedWheelTimer
  • OPenCV库移植到ARM开发板子上面配置过程
  • Jenkins实现CI/CD
  • 如何给img标签里的请求添加自定义header
  • Linux系统基本概念操作,用户和文件权限管理
  • 数据库中的单表查询和多表查询
  • 全网详解MyBatis-Plus LambdaQueryWrapper的使用说明以及LambdaQueryWrapper和QueryWapper的区别
  • 暴力破解(new)
  • Android12之apex调试
  • Python - 数字(Number)数据类型常用操作
  • QT(51)-动态链接库-windows
  • [Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)
  • 开学必备数码清单,大学生开学必备数码好物分享
  • 【面试题】常见前端基础面试题(HTML,CSS,JS)
  • Vue (4)
  • 静态库和动态库的制作
  • Oracle实现高可用性的工具(负载均衡/故障切换)
  • 图解经典电路之OCL差分功放-三极管分立器件电路分析
  • thymeleaf模板注入学习与研究--查找与防御
  • 第七章:Linux最小化搭建环境解说2
  • 两道链表经典算法题---链表有无环(基础+进阶)