不说废话,两个代码:
关天String的类:
public class testStr {
public static void main(String[] args) {
String str =null ;
str +="abc";
str +="def";
str +="ghi" ;
}
}
关于StringBuilder的类:
public class testStrBuilder {
public static void main(String[] args) {
StringBuilder strb = new StringBuilder();
strb.append("abc") ;
strb.append("def") ;
strb.append("ghi") ;
}
}
进行对上面两个类用javac编程,再用一下javap来看看编译的效果是怎样的?
下面是testStrBuilder的字节文件的反编译:
下面是testStr的反编译:
显然,不管能不能看懂这些字母代表什么意思,但是看后面的注解,能明白,他们很相同,String其实也就是StringBuilder去实现的了,但是,由红线的部分可以看到,String效率很差的,每次基本都要创建一个StringBuilder对象。