最基本的区别就是String是一个字符串常量,长度不可改变,StringBuffer和StringBuilder是字符串变量,他们两个的长度可以改变,但StringBuffer是线程安全的,而StringBuilder是非线程安全的。
String中的String类中使用被final关键字修饰的字符数组来保存字符串,private final char value[],String对象是不可改变的,也可以理解为是常量,线程安全。
StringBuffer是线程安全的是因为它对方法或者被调用的方法里加入了同步锁;
StringBuilder线程是非安全的是因为它并没有对方法加同步锁。
小小的总结:
(1) 如果要操作少量的数据,建议用String;
(2) 如果在多线程操作字符串缓冲区下操作大量的数据,建议使用SreingBuffer;
(3) 如果在单线程操作字符串缓冲区下操作大量数据,建议使用StringBuilder。