Java中的String、StringBuffer和StringBuilder
來源:程序員人生 發布時間:2015-01-10 08:30:32 閱讀次數:4281次
任何語言都離不了字符串的處理。Java中處理字符串的3個類String、StringBuffer和StringBuilder。這3個到底有甚么區分呢?
他們3個都是實現了CharSequence接口。但實現進程不1樣。

其實他們的使用方法都很簡單,這里看下StringBuilder的用法。
public class TestStringBuffer{
public static void main(String args[]){
StringBuffer str=new StringBuffer("liuweivan2015");
str.append(0101);//append() 方法用于向當前字符串的末尾追加內容,類似于字符串的連接
//str.deleteCharAt(4);//deleteCharAt() 方法用來刪除指定位置的字符,并將剩余的字符構成新的字符串
//str.delete(1,4);//delete()方法1次性刪除多個字符
//str.insert(5,"abc");//insert() 用來在指定位置插入字符串
//str.setCharAt(8,"e");//setCharAt() 方法用來修改指定位置的字符
System.out.println(str);
}
}
具體的結果可以逐一運行看1下。
String與StringBuffer的運行效力:分別用String和StringBuffer把yuandankuaile加10000次
public class TestSpeed {
public static void main(String[] args){
String fragment = "yuandankuaile";
int times = 10000;
// 通過String
long timeStart1 = System.currentTimeMillis();
String str1 = "";
for (int i=0; i<times; i++) {
str1 += fragment;
}
long timeEnd1 = System.currentTimeMillis();
System.out.println("String: " + (timeEnd1 - timeStart1) + "ms");
// 通過StringBuffer
long timeStart2 = System.currentTimeMillis();
StringBuffer str2 = new StringBuffer();
for (int i=0; i<times; i++) {
str2.append(fragment);
}
long timeEnd2 = System.currentTimeMillis();
System.out.println("StringBuffer: " + (timeEnd2 - timeStart2) + "ms");
}
}
結果:

效力不言而喻。
StringBuffer和StringBuilder功能基本相同,方法也差不多。但是StringBuffer方法是多線程、安全的,StringBuilder方法不是多線程安全的,它的效力比較快點。
小結:
操作少許的數據使用 String;
單線程操作大量數據使用 StringBuilder;
多線程操作大量數據使用 StringBuffer。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈