从2点分别进行分析:
1:速度:StringBuilder > StringBuffer > String
String是final的,String的成员变量也是final的,首先String实例化出来是不可变的(除非反射)
StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。
StringBuffer在拼接字符串时,使用了同步锁,安全性提高,而StringBuilder未使用同步锁,故效率提高
2:安全性:StringBuffer >StringBuilder
StringBuffer的append方法里是采用 synchronized关键字修饰,toStringcache=null,表明同步执行,是线程安全;
StringBuilder的append方法里没关键字,是线程不安全。
以后记住如何正确使用
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况