public static void testStringBuffer(){ long start System currentTimeMillis(); StringBuffer sbuf = new StringBuffer(); for(int=0;i<20000;i++){
sbuf.append(i+",");
} System.out.println(System, currentTimeMillis()- start);
}
public static void teststringBulider(){ long start = System currentTimeMillis(); StringBuilder builder = new StringBuilder( for (int i =0; i< 20000: i++)( builder. append(i +","); System, out. printIn(System. currentTimeMilliso- start);
}
}
public static void main(String[] args){ teststring(); teststringBuffer(); teststringBulider();
}
区别一:性能安全
运行结果以下:1217 9 6多线程
从测试结果看出, String类每次追加字符串都会建立新的对象,消耗的时间最长,性能极差。app
而 String Buffer和 String Builder每次追加字符串都是同一个对象,消耗的时间极短,性能良好。ide
而 String Buffer比 String builder消耗时间长一点点,这又是什么缘由呢?别看急,继续往下看,性能
区别二:线程是否安全测试
· String:线程不安全 · String Buffer:线程安全 · String Builder:线程不安全ui
String Buffer和 String Builder的使用几乎彻底相同,惟一的区别就是线程安全性不一样。spa
正是由于 String Buffer是线程安全的(支持同步锁),因此性能比String Builder稍差一点。线程
能够看到 String Builder速度是最快的,但当在多线程中使用 String Builder的操做是不安全的,而但 String Buffer是能够正确操做的。code
固然大多数状况下就是咱们是在单线程下进行的操做,因此大多数状况下是建议用 String Builder而不用String Buffer的。
总结:
1.若是要操做少许的数据使用 String。
2 多线程操做字符串缓冲区下操做大量数据使用 String Buffe。
3.单线程操做字符串缓冲区下操做大量数据使用 String Builde。