Java中的String、StringBuffer和StringBuilder,java中stringbuffer
任何語言都離不了字串的處理。Java中處理字串的三個類String、StringBuffer和StringBuilder。這三個到底有什麼區別呢?
他們三個都是實現了CharSequence介面。但實現過程不一樣。
其實他們的使用方法都很簡單,這裡看下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()方法一次性刪除多個字元//str.insert(5,"abc");//insert() 用來在指定位置插入字串//str.setCharAt(8,"e");//setCharAt() 方法用來修改指定位置的字元System.out.println(str);}} 具體的結果可以逐個運行看一下。
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。