Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen String und StringBuffer in Java? (Differenzvergleich)

Was ist der Unterschied zwischen String und StringBuffer in Java? (Differenzvergleich)

不言
不言Original
2018-09-18 17:19:438190Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Frage, was der Unterschied zwischen String und StringBuffer in Java ist. (Unterschiedsvergleich), es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Vorwort

  1. String und StringBuffer sind beide Klassen für Zeichenoperationen in Java

  2. Besonders String sehen wir oft ähnliches Ein Zuweisungscode, String str = „Hello World“, sieht aus wie int und gilt als der Basisdatentyp von Java. Tatsächlich handelt es sich bei String nicht um eine Klasse, sondern um eine spezielle Klasse, die direkt zugewiesen werden kann Datentyp.

  3. Es gibt drei Klassen in Java, die mit Zeichen operieren können:

(1) Character ist eine Klasse, die Einzelzeichenoperationen ausführt.
(2) String ist eine unveränderliche Klasse, die mit einer Zeichenfolge arbeitet.
(3) StringBuffer arbeitet auch mit einer Zeichenfolge, es handelt sich jedoch um eine Variablenklasse.

Der Unterschied zwischen String- und StringBuffer-Klassen in Java

  1. Der Inhalt des StringBuffer-Objekts kann geändert werden. Sobald das String-Objekt generiert wurde, kann es nicht mehr geändert werden sind eigentlich zwei Dinge.

  2. String ist ein Objekt, kein primitiver Typ; es ist ein unveränderliches Objekt, und sobald es erstellt wurde, kann sein Wert nicht geändert werden.

  3. Durch das Ändern eines vorhandenen String-Objekts wird tatsächlich ein neues Objekt erstellt und dann der neue Wert darin gespeichert.

  4. String ist eine letzte Klasse und kann nicht vererbt werden.

  5. StringBuffer ist ein veränderliches Objekt. Wenn es geändert wird, wird das Objekt nicht wie String neu erstellt. Es kann nur über den Konstruktor erstellt werden. Nachdem das Objekt erstellt wurde, wird Speicherplatz zugewiesen und zunächst eine Null gespeichert. Wenn Sie StringBuffer einen Wert zuweisen, können Sie dessen Append-Methode verwenden: obj.append("hello");

  6. StringBuffer ist bei String-Verbindungsvorgängen effizienter als String.

  7. Wenn das Programm häufige Änderungs- und Verbindungsvorgänge an Zeichenfolgen erfordert, ist die Leistung der Verwendung von StringBuffer höher.

  8. In der String-Klasse gibt es keine Methode zum Ändern eines Zeichens in einer vorhandenen Zeichenfolge. Da ein einzelnes Zeichen in einer Java-Zeichenfolge nicht geändert werden kann, heißt es in der JDK-Dokumentation, dass Objekte der String-Klasse sind unveränderlich.

  9. Unveränderliche Strings haben jedoch einen großen Vorteil: Der Compiler kann den String gemeinsam nutzen.

  10. StringBuffer ist threadsicher und kann problemlos in Multithread-Programmen verwendet werden, die Effizienz der Programmausführung ist jedoch relativ langsamer.

  11. Die Methoden in der StringBuffer-Klasse konzentrieren sich auf Änderungen an Strings, wie Anhängen, Einfügen und Löschen usw. Dies ist auch der Hauptunterschied zwischen den StringBuffer- und String-Klassen.

Vergleich von String- und StringBuffer-Verbindungszeichenfolgen

  1. String str = new String("Hello World");str += "hello world" ; Der Verarbeitungsprozess dieser String-Verbindung:

    (1) Erstellen Sie einen StringBuffer; (2) Rufen Sie die append()-Methode auf
    (3) Zum Schluss ruft der StringBuffer toString() auf der String-Wert
    (4) Aus dieser Sicht erfordert der Verbindungsvorgang von String mehr Vorgänge als StringBuffer, und die Effizienz wird beeinträchtigt.
    (5) Da String außerdem ein unveränderliches Objekt ist, wird bei jeder Neuzuweisung ein neues Objekt erstellt, sodass das ursprüngliche Objekt unbrauchbar wird und in den Müll gesammelt wird, was sich auch auf die Leistung auswirkt.

  2. Die StringBuffer-Klasse ist eine Hilfsklasse, die einen Speicherblock einer bestimmten Länge vorab zuweisen kann, um einen String-Puffer zu erstellen. Auf diese Weise ist die Verwendung der append-Methode der StringBuffer-Klasse zum Anhängen von Zeichen wesentlich effizienter als die Verwendung des String-Operators „+“, um Zeichen am Ende einer vorhandenen Zeichenfolge hinzuzufügen.

  3. Verwenden Sie den „+“-Operator. Jedes Mal, wenn Sie Zeichen zu einer Zeichenfolge hinzufügen, muss das Zeichenfolgenobjekt einen neuen Speicherplatz finden, um die größere Zeichenfolge aufzunehmen. Dies ist zweifellos ein sehr zeitaufwendiger Vorgang. aufwendiger Betrieb. Das Hinzufügen mehrerer Zeichen bedeutet, dass der Speicher für die Zeichenfolge immer wieder neu zugewiesen werden muss. Durch die Verwendung von StringBuffer wird dieses Problem vermieden.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen String und StringBuffer in Java? (Differenzvergleich). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn