string和string builder的區(qū)別 stringbuffer和stringbuilder的異同?
stringbuffer和stringbuilder的異同?stringbuffer 一下簡稱buffer stringbuilder 以下簡稱builder buffer 是線程安全的,builde
stringbuffer和stringbuilder的異同?
stringbuffer 一下簡稱buffer stringbuilder 以下簡稱builder buffer 是線程安全的,builder是不安全的。 buffer 速度慢,builder速度快。 其實在string ss “ss”;的過程中,就是調(diào)用兩次stringbuffer,StringBuffer sa new StringBuffer() (
string、stringbuffer和stringbuilder有什么區(qū)別?
在java中有3個類來負(fù)責(zé)字符的操作。
是進(jìn)行單個字符操作的,
對一串字符進(jìn)行操作。不可變類。
也是對一串字符進(jìn)行操作,但是可變類。
String:
是對象不是原始類型.
為不可變對象,一旦被創(chuàng)建,就不能修改它的值.
對于已經(jīng)存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進(jìn)去.
String 是final類,即不能被繼承.
StringBuffer:
是一個可變對象,當(dāng)對他進(jìn)行修改的時候不會像String那樣重新建立對象
它只能通過構(gòu)造函數(shù)來建立,
StringBuffer sb new StringBuffer()
note:不能通過付值符號對他進(jìn)行付值.
sb to here!//error
對象被建立以后,在內(nèi)存中就會分配內(nèi)存空間,并初始保存一個null.向StringBuffer
中付值的時候可以通過它的append方法.
(hello)
StringBuilder:
是一個可變對象,和StringBuffer相比,不是線程安全的,一般用在單個線程操作的時候(這種情況很普遍,所以一般優(yōu)先選用StringBuilder),速度比StringBuffe快很多。
字符串連接操作中StringBuffer的效率要比String高:
String str new String( to )
str here
的處理步驟實際上是通過建立一個StringBuffer,讓侯調(diào)用append(),最后
再將StringBuffer toSting()
這樣的話String的連接操作就比StringBuffer多出了一些附加操作,當(dāng)然效率上要打折扣.
并且由于String 對象是不可變對象,每次操作Sting 都會重新建立新的對象來保存新的值.
這樣原來的對象就沒用了,就要被垃圾回收.這也是要影響性能的.
看看以下代碼:
將26個