①可变与不可变
String可以存储基本类型和引用类型,长度不可变
StringBuffer 和 StringBuilder只能存储引用类型,长度可变
②是否多线程安全
String中的对象是不可变的,也就可以理解为常量,显然线程安全。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的
StringBuilder并没有对方法进行加同步锁,所以是非线程安全的
③StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)
如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。 |
|