Java 字符串怎么拼接

在写代码的时候,你有没有遇到过这种场景:要把“订单号”和“用户姓名”拼成一句“您的订单123456已发货,收件人:张三”,结果不小心写出了好几种拼接方式,甚至还出现了运行慢、报错的情况?这其实就是Java字符串拼接最常见的小问题——看起来简单,选不对方法就会出麻烦。

最基础的新手玩法:用“+”号拼接

刚学Java的人,最先接触的肯定是用“+”号拼接字符串。比如要做一个打招呼的功能,写String greeting = "你好," + "小程";,运行后直接得到“你好,小程”,连数字和字符串混拼也没问题,String info = "年龄:" + 25;会自动转成“年龄:25”。

Java 字符串怎么拼接

这种方法确实简单,就像把两块积木直接拼在一起,新手一学就会。但它也有个小缺点:如果要拼的内容特别多,比如循环里拼接1000次字符串,用“+”号就会变慢——因为Java每用一次“+”,就会偷偷创建一个新的字符串,相当于每次都做新的积木,重复的积木攒多了,自然就费时间。

效率优先的实用玩法:用StringBuilder拼接

如果要做频繁拼接的场景,比如批量生成商品列表的字符串,或者循环里拼接数据,就该用StringBuilder了。它就像一个可以随时加积木的收纳盒,不会每次都建新盒子。

举个实际的例子:做一个购物清单,要把“商品1:矿泉水”“商品2:面包”“商品3:火腿肠”拼起来。用StringBuilder的写法是:

`java

StringBuilder list = new StringBuilder();

list.append("商品1:矿泉水");

list.append("商品2:面包");

list.append("商品3:火腿肠");

String result = list.toString();

`

这里的append方法就像往收纳盒里放积木,每次放都在同一个盒子里加,不会产生多余的新内容。实测下来,拼接1000次的话,StringBuilder比“+”号快几十倍,做电商这类需要频繁处理字符串的场景,用它准没错。

特殊场景的特殊玩法:StringJoiner和String.join

如果拼接的是有固定分隔符的内容,比如用逗号把“苹果、香蕉、橘子”拼起来,用StringJoiner或者String.join会更省心,不用手动加分隔符。

比如要拼一串水果名称,用StringJoiner可以直接指定分隔符:

`java

StringJoiner joiner = new StringJoiner(",");

joiner.add("苹果").add("香蕉").add("橘子");

String fruitStr = joiner.toString(); // 得到“苹果,香蕉,橘子”

`

要是已经有一个现成的字符串数组,用String.join更简单:

`java

String[] fruits = {"苹果", "香蕉", "橘子"};

String fruitStr = String.join(",", fruits);

`

这两种方法就像给积木加了个“自动分隔的卡槽”,不会出现多打逗号、少打分隔符的错误,做报表或者批量导出数据的时候特别顺手。

别踩的小坑:小心字符串不可变

最后要提一个容易忽略的点:Java里的字符串是“不可变”的,不管用“+”还是其他方法,只要修改字符串,其实都是生成新的字符串。如果是单线程里偶尔拼接,用“+”号没问题;但如果是多线程同时拼接,别用StringBuilder,换成线程更安全的StringBuffer就行——它就像给收纳盒加了个锁,多个线程同时放积木也不会乱,适合做服务器里处理多用户数据的场景。

其实选哪种方法,核心就是看你的使用场景:偶尔用用选“+”,频繁拼接用StringBuilder,带分隔符的批量拼接用StringJoiner,多线程场景用StringBuffer。搞懂这几种方法,Java字符串拼接就再也不会出错啦。

上一篇 Swift语言核心特性与应用场景科普 助力开发者掌握高效编程技能