最近,在寫後台sql語句的時候用到了stringbuffer類,出於對這幾者之間區別的好奇,學習了一下網上各大部落格的見解,仔細了解了string、stringbuffer、stringbuilder之前的用法、區別以及效 率
string:字串常量
stringbuffer:字串變數 (執行緒安全)
stringbuilder:字串變數 (非執行緒安全)
cpu上,寫個1000次的拼接程式,就會很明顯了
下面看乙個小例子:
public class stringbuffertest
endtime = system.currenttimemillis();
system.out.println("使用string的時間是:" + (endtime - starttime) + "毫秒!");
starttime = system.currenttimemillis();
for (int i = 0; i < 9999; i++)
endtime = system.currenttimemillis();
system.out.println("使用stringbuffer的時間是:" + (endtime - starttime) + "毫秒!");
}}
執行結果:stringbuffer 效率高於string
對於三者使用的總結: 1.如果要操作少量的資料用 = string
2.單執行緒操作字串緩衝區 下操作大量資料 = stringbuilder
3.多執行緒操作字串緩衝區 下操作大量資料 = stringbuffer
借鑑以為博主的文章理解:
public stringbuffer deletecharat(int index)
該方法的作用是刪除指定位置的字元,然後將剩餘的內容形成新的字串。例如:
stringbuffer sb = new stringbuffer(「test」);
sb. deletecharat(1);
該**的作用刪除字串物件sb中索引值為1的字元,也就是刪除第二個字元,剩餘的內容組成乙個新的字串。所以物件
sb的值變為」tst」。
還存在乙個功能類似的delete方法:
public stringbuffer delete(int start,int end)
該方法的作用是刪除指定區間以內的所有字元,包含start,不包含end索引值的區間。例如:
stringbuffer sb = new stringbuffer(「teststring」);
sb. delete (1,4);
該**的作用是刪除索引值1(包括)到索引值4(不包括)之間的所有字元,剩餘的字元形成新的字串。則物件sb的值
是」tstring」。
3、insert方法
public stringbuffer insert(int offset, string s)
該方法的作用是在stringbuffer物件中插入內容,然後形成新的字串。例如:
stringbuffer sb = new stringbuffer(「teststring」);
sb.insert(4,「false」);
該示例**的作用是在物件sb的索引值4的位置插入字串false,形成新的字串,則執行以後物件sb的值
是」testfalsestring」。
4、reverse方法
public stringbuffer reverse()
該方法的作用是將stringbuffer物件中的內容反轉,然後形成新的字串。例如:
stringbuffer sb = new stringbuffer(「abc」);
sb.reverse();
經過反轉以後,物件sb中的內容將變為」cba」。
5、setcharat方法
public void setcharat(int index, char ch)
該方法的作用是修改物件中索引值為index位置的字元為新的字元ch。例如:
stringbuffer sb = new stringbuffer(「abc」);
sb.setcharat(1,』d』);
則物件sb的值將變成」adc」。
6、trimtosize方法
public void trimtosize()
該方法的作用是將stringbuffer物件的中儲存空間縮小到和字串長度一樣的長度,減少空間的浪費。
7、構造方法:
stringbuffer s0=new stringbuffer();分配了長16位元組的字元緩衝區
stringbuffer s1=new stringbuffer(512);分配了512位元組的字元緩衝區
8、獲取字串的長度: length()
stringbuffer s = new stringbuffer("www");
int i=s.length();
m.返回字串的一部分值
substring(int start) //返回從start下標開始以後的字串
substring(int start,int end) //返回從start到 end-1字串
9.替換字串
replace(int start,int end,string str)
s.replace(0,1,"qqq");
10.轉換為不變字串:tostring()。
String和StringBuffer的區別?
對於這個問題,網路上已經有較多的解答,大多數都是說string 和stringbuffer 它們可以儲存和操作字串,即包含多個字元的字元資料。這個 string 類提供了數值不可改變的字串。而這個 stringbuffer 類提供的字串可以進行修改。當你知道字元資料要改變的時候你就可以使用 stri...
String和StringBuffer的區別
string和stringbuffer的區別 2008 04 10 11 08 string與stringbuffer的區別 稍微延伸說來 public class else 列印的結果是 乙個記憶體空間。這裡 的意義是兩個運算元是否指向同乙個物件。可見s2在不用new建立的情況下會自動檢索到具有相...
String和StringBuffer學習總結
一 string x abc 和string y new string abc 區別 string x abc 變數x指向的是常量池的字串常量物件。x asd 表示x指向 asd 字串常量的位址,而不是把 abc 修改為 asd string y new string abc 變數y指向的是堆中的字...