- CharSequence接口:是一個字符序列阳仔,string,stringbuffer讹语,stringbuilder都實現(xiàn)了該接口
- string類是常量搞糕,不可變勇吊。
- stringbuffer類:可在多線程的情況下進行改變
- stringbuilder類:只能在單線程下進行修改
- stringbuilder比stringbuffer效率高,建議多使用stringbuilder窍仰。
1.CharSequence是一個java接口汉规,代表一個char序列,String、StringBuilder针史、StringBuffer都實現(xiàn)了該接口晶伦,CharSequence實例通過調用toString方法可轉化為String對象。
2.String類是final的啄枕,不可派生子類婚陪,其內部封裝的是char[],另外频祝,android下的String類和jdk中的String類是有區(qū)別的泌参,android下的String類中部分API通過native方法實現(xiàn),效率相對高一些常空。
3.String使用'+'進行字符串拼接時沽一,在編譯期會轉化為StringBuilder#append方式
4.String在內存中有一個常量池,兩個相同的串在池中只有一份實例(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ā)者應該指定其容量,以避免多次擴容所帶來的性能問題牍蜂。