方式一:+

“+”,是java操作运算符比较常用的,也是简单直接的一种方式。

     String aa = "魅言倾馨";String bb = "子非我鱼";System.out.println(aa+bb);

方式二:StringBuilder.append()和StringBuffer.append()

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

     String aa = "魅言倾馨";String bb = "子非我鱼";StringBuilder sber = new StringBuilder();StringBuffer sbf = new StringBuffer();sber.append(aa).append(bb);System.out.println(sber.toString());sbf.append(aa).append(bb);System.out.println(sbf.toString());

方式三:String类下的cocat()方法

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

         String aa = "魅言倾馨";String bb = "子非我鱼";String concat = aa.concat(bb);System.out.println(concat);

方式四:String类下的join()方法

JDK1.8提供了一种新的字符串拼接姿势:String类增加了一个静态方法join,第一个参数为字符串连接符

     String aa = "魅言倾馨";String bb = "子非我鱼";String join = String.join("-", aa, bb);System.out.println(join);

方式五:StringJoiner

StringJoiner是JDK1.8,java.util包中的一个类,用于构造一个由分隔符重新连接的字符序列

     String aa = "魅言倾馨";String bb = "子非我鱼";StringJoiner sj = new StringJoiner(":", "[", "]");sj.add(aa).add(bb);System.out.println(sj.toString());

StringJoiner源码

package java.util;public final class StringJoiner {private final String prefix;//前缀private final String delimiter;//间隔符private final String suffix;//后缀private StringBuilder value;//值private String emptyValue;//空值public StringJoiner(CharSequence delimiter) {this(delimiter, "", "");//默认前缀和后缀为"",重载调用}public StringJoiner(CharSequence delimiter,CharSequence prefix,CharSequence suffix) {//间隔符,前缀和后缀判断是否为null,null将抛出异常Objects.requireNonNull(prefix, "The prefix must not be null");Objects.requireNonNull(delimiter, "The delimiter must not be null");Objects.requireNonNull(suffix, "The suffix must not be null"); // 成员变量赋值this.prefix = prefix.toString();this.delimiter = delimiter.toString();this.suffix = suffix.toString();this.emptyValue = this.prefix + this.suffix;//空值被设置为只有前后缀}//设置空值,检查是否为nullpublic StringJoiner setEmptyValue(CharSequence emptyValue) {this.emptyValue = Objects.requireNonNull(emptyValue,"The empty value must not be null").toString();return this;}@Overridepublic String toString() {if (value == null) {return emptyValue;//没有值将返回空值或者后续设置的空值} else {if (suffix.equals("")) {return value.toString();//后缀为""直接返回字符串,不用添加} else {//后缀不为"",添加后缀,然后直接返回字符串,修改长度int initialLength = value.length();String result = value.append(suffix).toString();// reset value to pre-append initialLengthvalue.setLength(initialLength);return result;}}}初始化,先添加前缀,有了之后每次先添加间隔符,StringBuilder后续append字符串public StringJoiner add(CharSequence newElement) {prepareBuilder().append(newElement);return this;}//合并StringJoiner,注意后面StringJoiner 的前缀就不要了,后面的appen进来public StringJoiner merge(StringJoiner other) {Objects.requireNonNull(other);if (other.value != null) {final int length = other.value.length();// lock the length so that we can seize the data to be appended// before initiate copying to avoid interference, especially when// merge 'this'StringBuilder builder = prepareBuilder();builder.append(other.value, other.prefix.length(), length);}return this;}//初始化,先添加前缀,有了之后每次先添加间隔符private StringBuilder prepareBuilder() {if (value != null) {value.append(delimiter);} else {value = new StringBuilder().append(prefix);}return value;}public int length() {// Remember that we never actually append the suffix unless we return// the full (present) value or some sub-string or length of it, so that// we can add on more if we need to.//不忘添加后缀的长度return (value != null ? value.length() + suffix.length() :emptyValue.length());}
}

方式六:StringUtils.join()

实战项目中,我们处理字符串的时候,经常会用到这个类.org.apache.commons.lang3.StringUtils包下,该方法更善于拼接数组中的字符串,并且不用担心 NullPointerException。

         String aa = "魅言倾馨";String bb = "子非我鱼";String ids[] = {"1","2","3"};System.out.println(StringUtils.join(aa,bb));String join1 = StringUtils.join(ids,",");System.out.println(join1);

总结

以上所述是小编给大家介绍的Java 字符串拼接姿势,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的

java字符串拼接常用方式相关推荐

  1. Java字符串反转常用的2种方式

    Java字符串反转常用的2种方式 1.利用StringBuilder封装的reverse()方法 2.利用数组进行反转 ①先将字符串转换为char类型的数组 ②对char类型数组进行反转 public ...

  2. 最优雅的Java字符串拼接是哪种方式?

    title shortTitle category tag description head 最优雅的Java字符串拼接是哪种方式? Java字符串拼接 Java核心 数组&字符串 Java程 ...

  3. Java 字符串拼接的各种玩法

    java中字符串拼接各种方式与执行效率 由于String对象是不可变对象,因此在需要对字符串进行修改操作时(如字符串连接和替换),String对象总是会生成新的对象,所以其性能相对较差. String ...

  4. Java 字符串拼接 StringBuilder() StringBuffer

            字符串拼接 普通方式 public class StringDemo2 {public static void main(String[] args) {// 表示获取从1970-01 ...

  5. java 字符串拼接_JAVA字符串拼接常见方法汇总

    字符串的拼接,常使用到的大概有4种方式: 1.直接使用"+"号 2.使用String的concat方法 3.使用StringBuilder的append方法 4.使用StringB ...

  6. C\C++\Java字符串拼接比较

    C\C++\Java字符串拼接比较: 昨天买好小米盒子,自己折腾了一会然后就教会老妈怎么玩,怎么看还珠格格之后,我闲来无事,突然想起了上次一个项目处理字符串遇到的性能问题,然后就仔细考虑了一下,越考虑 ...

  7. Go语言6种字符串拼接的方式

    Go语言6种字符串拼接的方式 前言 string类型 字符串拼接的6种方式及原理 原生拼接方式"+" 字符串格式化函数fmt.Sprintf Strings.builder byt ...

  8. Java字符串拼接“+“

    Java字符串拼接"+" 当字符串之间使用 + 号拼接的时候,系统底层会自动创建一个StringBuilder对象,然后再调用其append方法完成拼接,拼接后,再调用其toStr ...

  9. 关于 Java 字符串拼接的几种方式以及性能比较

    一.字符串拼接 字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起. 我们都知道,String 是 Java 中一个不可变的类,所以他一旦被实例化就无法被修改. 不可变类的 ...

最新文章

  1. 十、深入Java字符串(下篇)
  2. java.lang.NumberFormatException: For input string: F
  3. 一个最简单的SAP UI5应用部署到SAP云平台CloudFoundry环境后,自动生成了哪些资源
  4. 工作332:uni-uview上传获取到对应数据
  5. 27代理模式(Proxy Pattern)
  6. 比较list集合相等的方法
  7. vscode之npm不是内部活外部命令
  8. Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
  9. 域名解析到指定端口_南京课工场IT培训:搭建nginx虚拟主机——基于域名、端口和IP...
  10. CCNA(高级实验)
  11. SQL Server 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项
  12. 奥克兰硕士计算机专业学费,【2018新西兰奥克兰大学硕士研究生各专业学费一览】 新西兰奥克兰大学学费...
  13. android scala,用scala开发android,用spray-json解析json
  14. 记念陪伴了我这么久的电脑
  15. 瑞合信LED字幕WiFi卡使用教程(8.0版)
  16. iframe框架内嵌vue项目:Blocked a frame with origin http://xxxx from accessing a cross-origin iframe.解决办法
  17. matlab矩阵变成行向量,matlab中将一个矩阵按照行拼成一个行向量应该怎么输?
  18. 萝卜干煎蛋,榨菜,白粥,很美丽
  19. 记录 java + selenium脚本实现网页自动化
  20. ParticleSystem中的Culling Mode对耗时有怎样的影响

热门文章

  1. [383]python unicodedata用法
  2. 简评骑士与凯尔特人交易对双方影响
  3. 一个让Flex代码也能自动套用格式的插件 转
  4. 方舟原始恐惧mod生物代码_方舟手游狮鹫怎么训 方舟手游狮鹫怎么训
  5. 爆款猫来告诉你直通车高投产品有哪些?有什么注意事项?
  6. cad怎么导出为图片格式?CAD转换的方式说明
  7. python连续写入文件操作_python进行文件操作
  8. 计算机专业平面设计,计算机专业和平面设计专业是一个专业不?
  9. 团体程序设计天梯赛----pta 练习集
  10. 查找当前目录的重复文件