面試:說一說String,StringBuffer,StringBuild之間的區別?
阿新 • • 發佈:2019-01-31
輕鬆一下
讀初中的時候,下午上晚自習,突然教室裡有一股廁所的很臭很臭的氣味飄進來,教室裡安靜得可以聽到針落地的聲音,每一個同學都在努力的撇氣。忽然,有一個男生站起來開啟窗戶,大口的呼吸,呼呼
呼呼,只聽得他大叫一聲:外面更臭… …
每個人都哈哈大笑,臭味還在持續中… …
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!)
嚴肅一下!
你是什麼時候感覺自己長大的?
章魚可能是外星人,.它的大腦和複雜的神經系統,相機般的眼睛,靈活的身體,通過切換顏色和形狀的能力進行即時偽裝,這些特徵都是突然出現在生物進化之中。