字符串拼接原理
String str = "a" + "b" + "c";
System.out.println("str = " + str);
此段代码编译器做了优化处理,通过java反编译可以看到其实变成了这样
String str = "abc";
System.out.println("str = " + str);
字符串拼接底层是
- 如果没有变量参与,都是字符串直接相加,编译后就是拼接之后的结果,会复用串池中的字符串。
- 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
StringBuilder提高效率原理
- 所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存。
- StringBuilder默认容量是16。
- 扩容机制是老容量*2+2。