Java - String vs. StringBuffer

Dieser Artikel zeigt den Zeitunterschied, der für ähnliche Operationen an einem String -Objekt und einem` StringBuffer`-Objekt benötigt wird.

  1. Da String eine unveränderliche Klasse ist, wird für jedes Objekt ein neues Objekt erzeugt

Zeit, an der eine Operation ausgeführt wird . StringBuffer ist eine veränderliche Klasse, der Overhead des Objekts

Instantiierung während des Betriebs wird entfernt. Daher ist die Zeit für Operationen weniger als bei "String"

1. String vs StringBuffer

Lassen Sie uns nun die Ausführungszeit von String -Klasse und` StringBuffer`-Klasse vergleichen, um 10000 Zeichen anzufügen.

TimeTester.java

package com.techfou;

public class TimeTester{

    public static void main(String[]args) {

        String aString = "";
        long before = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            aString = aString + "x";
        }
        long after = (System.currentTimeMillis());
        System.out.println("Execution Time for String: " + (after - before));

        before = System.currentTimeMillis();
        StringBuffer aStringBuffer = new StringBuffer();
        for (int i = 0; i < 10000; i++) {
            aStringBuffer.append("x");
        }
        after = (System.currentTimeMillis());
        System.out.println("Execution Time for StringBuffer: " + (after - before));

    }

}

Beim Ausführen des obigen Codes erhalten Sie die folgende Ausgabe. Die Ausgabe kann je nach Prozessorgeschwindigkeit variieren. Wie deutlich zu erkennen ist, dauert es 128 Millisekunden, um 10000 Strings an ein String-Objekt anzuhängen.

Im Vergleich dazu benötigt StringBuffer nur 11 Millisekunden, um dies zu ermöglichen.

Execution Time for String: 128
Execution Time for StringBuffer: 11

Dies beweist, dass StringBuffer schneller ist als` String`. Die unveränderliche Eigenschaft von String macht es jedoch Thread-sicher.

2. Schlussfolgerung

Abschließend kann man sagen, dass StringBuffer eine bessere Wahl ist als` String`, wenn Sie mit seiner Syntax und den von der Klasse bereitgestellten Funktionen vertraut sind. Es ist schneller und veränderbar. "String" ist auf die Verwendung in Situationen beschränkt, in denen schreibgeschützte Objekte erforderlich sind oder die Bearbeitung von Zeichenfolgen erforderlich ist.

Referenzen

  1. % E2% 80% 9Dhttp://www.javaworld.com/article/2076072/build-ci-sdlc/stringbuffer-versus-string.html%E2%80%9D[Warum

StringBuffer ist schneller als String]. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html [String

wie in Java-Dokumenten]