字符串拼接原理 javac 和 javap
一、新建一个 Test1 类
public class Test1 { public static void main(String[] args) { String a = "a"; String s = a+"b"+"c"+"d"; System.out.println(s); } }
二、使用 javac 将 Test1.java 编译为 Test1.class
C:\User\桌面>javac D:\workspace\Test1\src\com\test\Test1.java
三、使用 javap -c 将 Test1.class 反编译
四、结论
String 在做字符串拼接的时候,实际上创建了一个 StringBuilder 对象,然后调用了该对象的 append 方法
五、现在你可能随意使用 String 对象,反正编译器会为你自动优化性能,可是在这之前,我们更深入的看看编译器为我们优化到了什么程度
下面使用两种方式生成一个 String:方法一使用多个 String 对象;方法二在代码中使用了 StringBuilder。
public class Test1 { public String withString(){ String result = ""; for (int i = 0; i < 3; i++) { result += i; } return result; } public String withStringBuilder(){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < 3; i++) { sb.append(i); } return sb.toString(); } }