0

重複の可能性:
JavaのStringとStringBufferの違いは何ですか?

StringBufferとStringを使用して関数をテストするとき。StringBufferを使用すると、2秒または3秒以内に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);
} 
4

1 に答える 1

2

これはおそらく、 を使用するStringBufferと、各反復でwhilenew を作成する場合よりも 20 から 30 倍速くループが実行Stringされるためです。結果として、メモリ不足が早くなります。

ところで、String オブジェクトを使用してループ内で連結操作を実行しないでください。StringBuilder代わりに使用してください(そのメソッドよりもわずかに遅いわけではStringBufferありません)。StringBuildersynchronized

于 2012-09-17T11:36:26.263 に答える