可能重复: what is the difference between String and StringBuffer in java?
当我使用StringBuffer和String测试函数时。当我使用StringBuffer时,我在2或3 secound.But中得到了java.lang.OutOfMemoryError,当我使用String时,直到1分钟才得到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);
} 发布于 2012-09-17 11:36:26
这可能是因为当您使用StringBuffer时,while循环的执行速度比每次迭代时创建新String时快20到30倍:因此,内存不足的速度更快。
顺便说一句,不要在带有字符串对象的循环中执行级联操作。使用StringBuilder代替(而不是StringBuffer,因为它比StringBuilder稍慢,因为它的方法是synchronized)。
https://stackoverflow.com/questions/12458290
复制相似问题