String、StringBuffer雄嚣、StringBuilder的區(qū)別缓升;
1. String對象是不可改變的港谊。
2. 如果要修改字符串而不創(chuàng)建新的對象歧寺,則可以使用 StringBuilder 類斜筐。例如顷链,當(dāng)在一個循環(huán)中將許多字符串連接在一起時嗤练,使用 StringBuilder 類可以提升性能煞抬。
3. 由于 String 的值一旦創(chuàng)建就不能再修改,所以稱它是恒定的蝗碎”钠铮看似能修改 String 的方法實際上只是返回一個包含修改內(nèi)容的新 String慈省。
4. StringBuffer可改變的Unicode字符序列,允許并發(fā)操作眠菇,是線程安全的边败。
5.? StringBuilder:可改變的Unicode字符序列操作同StringBuffer,只是不支持并發(fā)操作捎废,非線程安全的 笑窜。
6. 不考慮線程安全前提下,StringBuilder性能最高登疗,StringBuffer次之断傲,String比較差垦垂。? 為什么StringBuffer的性能比String高?主要原因在于String類是不可變類聂渊,任何對String引用指向的字符串作出的修改都會導(dǎo)致生成新的字符串(對象)找蜜,而對StringBuffer的修改則不會導(dǎo)致新對象的產(chǎn)生。
那么為什么StringBuilder的性能比StringBuffer的高呢?這則與線程安全有關(guān)抬闯。StringBuilder是線程非安全的睡榆。