Possible Duplicate:
what is the difference between String and StringBuffer in java?
当我使用 StringBuffer 和 String 测试函数时。当我使用 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);
}
最佳答案
这可能是因为当您使用 StringBuffer
时,你的while
循环的执行速度比创建新的 String
快 20 到 30 倍在每次迭代中:因此,您很快就会耗尽内存。
顺便说一句,永远不要在循环中使用 String 对象执行串联操作。使用StringBuilder
相反(不是 StringBuffer
因为它比 StringBuilder
稍慢,因为它的方法是 synchronized
)。
关于java - StringBuffer 和 String 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458290/