「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」
在日常的开发之中,我们经常碰到将字符串连接在一起的问题。两个字符串相拼接,直接使用加号就可以连接,还有就是多个字符相连接。比如国家名,省份名,城市名使用-连接。但我国是有直辖市的,即省份名字可能为空。这个时候用加号连接是不是还要判断呢?还有就是获得一个汉字的多音字,有n个,这个时候是不是要循环进行连接,最后还要去除最后一个符号。下面列举下常见的几种字符串拼接的方法。
public static void main(String[] args) {
String a = "a";
String b = "b";
System.out.println(a+b);
}
反编译后的结果
public static void main(String[] args) {
String a = "a";
String b = "b";
System.out.println((String)new StringBuilder().append((String)a).append((String)b).toString());
}
可以看到使用+号拼接实际上就是使用StringBuilder去连接(ps:怎么看反编译的结果呢,我使用的是idea插件CFR Decompile,安装好后右键.class文件,可以看到有这个按键,点击。)
所以就算使用循环拼接,也别用+的方式,每加一次,直接就是一个StringBuilder对象,直接创建一个StringBuilder,然后append
接下来要介绍的方法就是创建StringBuilder和StringBuffer对象 然后append这不少创建几个对象。
StringBuilder builder = new StringBuilder();
String a = "a";
String b = "b";
builder.append(a).append(b);
System.out.println(builder);
还有一种方法就是String自带的concat方法。
String a = "a";
String b = "b";
System.out.println(a.concat(b));
拼接多个字符时使用什么呢,可以使用String自带的join或者使用org.apache.commons.lang.StringUtils,非常方便,不用去判断省份是否为空,然后在append。
List<String> list = new ArrayList<>();
String a = "中国";//国家
String b = null;//省份
String c = "北京市";//城市
list.add(a);
list.add(b);
list.add(c);
List<String> resultList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
System.out.println(StringUtils.join(resultList,","));
List<String> list = new ArrayList<>();
String a = "中国";//国家
String b = null;//省份
String c = "北京市";//城市
list.add(a);
list.add(b);
list.add(c);
List<String> resultList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
System.out.println(String.join(",",resultList));
如有问题,请大佬们多多包含,尽请大佬批评。