思路: 共同点、不同点、运行效率 ,线程安全,使用场景
1、String、StringBuffer、StringBuilder类都是final修饰的,不可被继承。
2、String是不可变的,底层是final类型修饰的数组,拼接时会创建新的字符串;
而StringBuffer和StringBuilder都继承自AbstractStringBuilder,是可变的,append追加的方式,节约常量池空间。
3、StringBuilder > StringBuffer > String
4、StringBuffer方法由sychronized修饰,是线程安全的;StringBuilder不是线程安全的。
补充:String底层是不可变的,所以也是线程安全的。
5、String: 少量的字符串操作场景
StringBuffer:多线程下在字符串缓冲区进行大量操作
StringBuilder:单线程下在字符串缓冲区进行大量操作