1、类型区别
String 是字符串常量
StringBuffer是字符串变量
StringBuilder是字符串变量
2、运行速度
String < StringBuffer < StringBuilder
原因:String是字符串常量,并且String类型不是基本类型,实际可以看做是一个对象,在拼接的时候在会不停的创建对象。所以String的运行效率相对于另外的两个低。
String a = "123" String b = "123" //a 和 b 只是值相同,地址不同
String的equals()被重写
3、线程安全
StringBuilder:线程非安全的
StringBuffer:线程安全的
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。
4. 对于三者使用的总结:
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer