0

可能重复:
java中的String和StringBuffer有什么区别?

当我使用 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);
} 
4

1 回答 1

2

这可能是因为当您使用时StringBuffer,您的while循环执行速度比在每次迭代中创建新时快 20 到 30 倍String:因此,您更快地耗尽了内存。

顺便说一句,永远不要在带有 String 对象的循环中执行连接操作。改为使用StringBuilder(不是因为它比它的方法StringBuffer稍微慢一点)。StringBuildersynchronized

于 2012-09-17T11:36:26.263 回答