- CharSequence接口:是一個字符序列,string,stringbuffer,stringbuilder都實現(xiàn)了該接口
- string類是常量,不可變。
- stringbuffer類:可在多線程的情況下進行改變
- stringbuilder類:只能在單線程下進行修改
- stringbuilder比stringbuffer效率高,建議多使用stringbuilder。
1.CharSequence是一個java接口,代表一個char序列,String、StringBuilder、StringBuffer都實現(xiàn)了該接口,CharSequence實例通過調(diào)用toString方法可轉(zhuǎn)化為String對象。
2.String類是final的,不可派生子類,其內(nèi)部封裝的是char[],另外,android下的String類和jdk中的String類是有區(qū)別的,android下的String類中部分API通過native方法實現(xiàn),效率相對高一些。
3.String使用'+'進行字符串拼接時,在編譯期會轉(zhuǎn)化為StringBuilder#append方式
4.String在內(nèi)存中有一個常量池,兩個相同的串在池中只有一份實例(String s = "abc"方式或者String#intern方式會在池中分配),使用new String方式會在heap中分配,每次創(chuàng)建都是一個全新的實例。
5.StrigBuilder & StringBuffer都是可擴展的串,提供了一系列apped方法用于拼接不同類型對象
6.StringBuffer于jdk1.0引入,線程安全(多線程場景下使用),StringBuilder于jdk1.5引入,線程不安全,因而效率更高。
7.StringBuilder & StringBuffer初始容量都為16,開發(fā)者應(yīng)該指定其容量,以避免多次擴容所帶來的性能問題。