思路: 共同點、不同點、運行效率 ,線程安全,使用場景
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:單線程下在字符串緩衝區進行大量操作