1、三者在执行速度方面:String <StringBuffer<StringBuilder
String的执行速度小于后者的原因:
String是字符串常量,也就是不可改变的对象,StringBuffer和StringBuilder都是字符串变量;
exp:String s = "adidas";
s = s+1;
System.out.println(s);//result adidas1
jvm是这样解释这段代码的:创建对象s,赋值adidas,然后再创建一个对象s用来执行第二行代码,我们之前对象没有变化,所以说String对象是不可改变的对象,由于这种机 制的存在,每当我们用String操作字符串时,实际上是在不断创建新对象,原来的对象会被gc清理掉,执行效率可想而知;
exp:StringBuilder s2 = new StringBuilder("abc").append("def").append("fgh");
String s1 = "abc"+"cde" + "fgh";
这个例子 s1的执行速度快,StringBuilder并不占优势,这是因为对于jvm来说,String s1 = "abc"+"cde" + "fgh"相当于String s1 = "abccdefgh",所以执行速度快,如果字符串来自另外的对象,那么jvm就会按步骤一步一步执行,就不会那么快了;
2、StringBuffer与StringBuilder
StringBuffer是线程安全的,StringBuilder是线程非安全的,在不考虑线程安全性的情况,StringBuilder操作字符串的执行效率更高一些。
只是一些学习笔记,会有别处借鉴的东西。