String中的+链接和StringBuilder中的append有什么区别?它们之间又有什么关系?
前言
我们知道在Java语言中,字符串的连接方式有很多种。其中最常用的则是String的+或者+=和StringBuilder中的append。那么,他们二者之间到底有什么关系?实际项目中又到底该用哪个呢?
背后机制
在Java中,String可以直接使用+和+=实现两个字符串的链接。这是Java编译器提供的支持。但其实在编译器的背后呢,Java编译器还是会生成StringBuilder,+和+=还是会转化成append。
比如说下面的代码
String str = "hello";
str += "world";
System.out.println(str);
编译器则会转化成
StringBuilder stringBuilder = new StringBuilder("hello");
stringBuilder.append("world");
System.out.println(stringBuilder.toString());
因此在简单的情况下,使用+链接和使用StringBuilder效果是一样的。但是在循环的情况下,可能使用StringBuilder效率会更高。