本文介绍Java字符串的惯用法与细节研究。

使用StringBuilder或StringBuffer

// join(["a", "b", "c"]) -> "a and b and c"
String join(List<String> strs) {
  StringBuilder sb = new StringBuilder();
  boolean first = true;
  for (String s : strs) {
    if (first) first = false;
    else sb.append(" and ");
    sb.append(s);
  }
  return sb.toString();
}

反转字符串

String reverse(String s) {
  return new StringBuilder(s).reverse().toString();
}

Java 字符串拼接“+”号运算符原理

“+”号操作符必须是字符串拼接最常用的一种了,没有之一。使用“+”拼接字符串,其实只是Java提供的一个语法糖。那么,我们就来解一解这个语法糖,看看他的内部原理到底是如何实现的。

例子:

String str1= "hello";
String str2= "world";
String endStr = str1 + " " + str2;

class文件反编译:

String str1 = "hello";
String str2 = "world";
(new StringBuilder()).append(str1).append(" ").append(str2).toString();

通过查看反编译以后的代码,我们可以发现,原来字符串常量在拼接过程中,是将String转成了StringBuilder后,使用其append方法进行处理的。

那么也就是说,Java中的“+”对字符串的拼接,其实现原理是使用StringBuilder.append()方法。

参考:https://zhuanlan.zhihu.com/p/151615108