字符串拼接原理 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();
    }    
        
}

 

posted @ 2018-07-13 10:47  方方方方方方  阅读(155)  评论(0编辑  收藏  举报