主要分为两方面,一方面是运行速度,另一方面是线程安全。
运行速度:
StringBuilder>StringBuffer>String
String最慢是因为String是字符串常量,String的对象一旦被创建之后是不可更改的,Java实际对String的操作是一个不断创建新对象并回收旧对象的过程,所以运行速度就会慢很多,但StringBuffer,StringBuilder是字符串变量,对字符串变量进行操作,直接对该对象进行修改就可以。
线程安全:
StringBuffer是线程安全的,StringBuilder是线程不安全的。
如果一个StringBuffer对象在字符串缓冲区中进行多线程操作时,StringBuffer中很多方法是可以有Synchronized关键字的,但StringBuilder的方法没有该关键字,所以多线程环境下为了保证线程安全,就要使用StringBuffer,但如果是单线程或者是不规定需要确保线程安全的情况下还是建议使用速度较快的StringBuilder。
总结:
1.String适合于少量字符串操作。
2.StringBuffer适合于多线程下在字符串缓冲区中进行大量字符串操作。
3.StringBuilder适合于单线程下在字符串缓冲区中进行大量字符串操作。