StringBuffer和String之间有所不同

时间:2012-09-17 11:30:15

标签: java string stringbuffer

  

可能重复:
  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);
} 

1 个答案:

答案 0 :(得分:2)

这可能是因为当你使用StringBuffer时,你的while循环的执行速度比你在每次迭代时创建新的String快20到30倍:因此,你的用完了记忆得早。

顺便说一下,从不在使用String对象的循环中执行连接操作。请改用StringBuilder(不是StringBuffer,因为它比StringBuilder略慢,因为它的方法是synchronized。)