2012-09-17 50 views
0

可能重複間不同:
what is the difference between String and StringBuffer in java?的StringBuffer和字符串

當我測試使用的StringBuffer和字符串的函數。當我使用StringBuffer時,我在2或3秒鐘內得到了java.lang.OutOfMemoryError。但是,當我使用String時,直到一分鐘,我纔得到java.lang.OutOfMemoryError錯誤。他們有什麼不同,我不完全清楚。

public void print() { 
    StringBuffer buffer = new StringBuffer(); 
    double result = 1.0/7.0; 
    buffer.append(result); 
    while (result != 0) { 
     result = result % 7.0; 
     buffer.append(result); 
    } 
    System.out.println(buffer.toString()); 
} 


public void print() { 
    String st = ""; 
    double result = 1.0/7.0; 
    st = st + result; 
    while (result != 0) { 
     result = result % 7.0; 
     st = st + result; 
    } 
    System.out.println(st); 
} 
+3

可能的重複http://stackoverflow.com/questions/2439243/what-is-the-difference-between-string-and-stringbuffer-in-java – gigadot

+0

StringBuffer更快 – SJuan76

+0

它會更快。我不知道爲什麼我用StringBuffer獲得內存不足。現在,我正在參考http://stackoverflow.com/questions/2439243/what-is-the-difference-between-string-and-stringbuffer-in-java – CycDemo

回答

2

這可能是因爲當你使用StringBuffer,你while循環執行,當你在每次迭代中創建新的String比快20到30倍:因此,你跑出更快的內存。

順便說一句,從不在與String對象的循環中執行串聯操作。改爲使用StringBuilder(不是StringBuffer,因爲它的方法是​​),因爲它比StringBuilder稍慢。

相關問題