而這個StringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。
在java中有3個類來負責字符的操作。
1.Character 是進行單個字符操作的,
2.String 對一串字符進行操作。不可變類。
3.StringBuffer 也是對一串字符進行操作,但是可變類。
String:
是對象不是原始類型.
為不可變對象,一旦被創(chuàng)建,就不能修改它的值.
對于已經(jīng)存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進去.
String 是final類,即不能被繼承.
StringBuffer:
是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象
它只能通過構(gòu)造函數(shù)來建立,
StringBuffer sb = new StringBuffer();
note:不能通過付值符號對他進行付值.
sb = "welcome to here!";//error
對象被建立以后,在內(nèi)存中就會分配內(nèi)存空間,并初始保存一個null.向StringBuffer
中付值的時候可以通過它的append方法.
sb.append("hello");
以上為摘抄,網(wǎng)上常見的,以下為自己添加的見解:
地址不可更改,長度和內(nèi)容可改。append()方法是追加,超過預留內(nèi)存時,內(nèi)存翻倍。
效率比較:StringBuffer比String高。因為StringBuffer有預留空間一直追加,只是對一個對象進行操作。而String是不能被修改的,只能重復的去創(chuàng)建對象來實現(xiàn)修改。――如果頻繁的對字符串進行追加、替換、修改、插入、刪除操作,最好使用StringBuffer。如果必須用String可以使用StringBuffer調(diào)用toString()來轉(zhuǎn)換成String即可。
我的機子比較垃圾,執(zhí)行下來結(jié)果是
String運行時間:164593
-----------------
StringBuffer運行時間:31
而且String有contains方法,而StringBuffer沒有。contains是包含的意思,這里可以在回憶下contains方法
執(zhí)行結(jié)果為
true
新聞熱點
疑難解答