1. 程式人生 > >面試:說一說String,StringBuffer,StringBuild之間的區別?

面試:說一說String,StringBuffer,StringBuild之間的區別?

輕鬆一下

讀初中的時候,下午上晚自習,突然教室裡有一股廁所的很臭很臭的氣味飄進來,教室裡安靜得可以聽到針落地的聲音,每一個同學都在努力的撇氣。忽然,有一個男生站起來開啟窗戶,大口的呼吸,呼呼呼呼,只聽得他大叫一聲:外面更臭… …
每個人都哈哈大笑,臭味還在持續中… …

String,StringBuffer,StringBuilder之間的區別

- String:字串變數,final修飾,不可變!
- StringBuffer:字串變數(執行緒安全,可變)!!
- StringBuilder:字串變數(執行緒不安全,可變)!!!是StringBuffer的簡易版,更快!

結論

一般情況:StringBuilder>StringBuffer>String
特殊情況:String>StringBuffer>StringBuffer

分析

一、StringBuilder>StringBuffer>String?

/**
*String>StringBuffer
*JVM把str= "String"+"And"+"StringBuffer"直接看成"StringAndStringBuffer";
*/
String str= "String"+"And"+"StringBuffer";
StringBuffer = new
StringBuilder(“String”).append(“And”).append(“StringBuffer”); /** *String<StringBuffer *如果是一個物件一個物件的相加 */ String s1="String"; String s2="And"; String s3="StringBuffer"; String str= s1+s2+s3; StringBuffer = new StringBuffer(s1).append(s2).append(s3);

1.String 是不可變的物件, 因此在每次對 String 型別進行改變的時候其實都等同於生成了一個新的 String 物件,然後將指標指向新的 String 物件,所以經常改變內容的字串最好不要用 String ,因為每次生成物件都會對系統性能產生影響,特別當記憶體中無引用物件多了以後, JVM 的 GC 就會開始工作,那速度是一定會相當慢的。
2.StringBuffer 類就不一樣,每次結果都只對 StringBuffer 物件本身進行操作,而不是生成新的物件,所以速度快!
> 3.在變數的變化比較多的時候使用StringBuffer !

(多數情況下,都是單執行緒的,所以推薦使用StringBuilder!)

嚴肅一下!這裡寫圖片描述

你是什麼時候感覺自己長大的?
章魚可能是外星人,.它的大腦和複雜的神經系統,相機般的眼睛,靈活的身體,通過切換顏色和形狀的能力進行即時偽裝,這些特徵都是突然出現在生物進化之中。