共同点:
1 都是字符串相关,底层的实现都是char数组
2 类都是final的,意味着不可以被继承
区别:
String的value数组是private final的,这意味者他的值是不可以被修改的。而StringBuffer StringBuilder都是继承AbstractStringBuilder的,他们的value数组都可以通过数组进行修改。在修改之前会检测数组的大小是否能容纳下,如果不能,那么会进行扩容(这点与ArrayList是一致的,区别在于ArrayList扩容1.5倍,而StringBuilder的大小刚好满足存放)。
StringBuffer是线程安全的(通过给方法加全局锁),而StringBuilder是线程不安全的。