Unterschied zwischen String und StringBuffer-Klasse in Java

Autor: Laura McKinney
Erstelldatum: 3 April 2021
Aktualisierungsdatum: 15 Kann 2024
Anonim
Строки в Java. String, StringBuilder, StringBuffer, Wrappers. Java Professional. Урок 5
Video: Строки в Java. String, StringBuilder, StringBuffer, Wrappers. Java Professional. Урок 5

Inhalt


String und StringBuffer sind die Klassen, die mit Strings arbeiten. Die StringBuffer-Klasse ist die Peer-Klasse der Klasse String. Das Objekt der String-Klasse hat eine feste Länge. Das Objekt der StringBuffer-Klasse ist erweiterbar. Der grundlegende Unterschied zwischen String und StringBuffer besteht darin, dass das Objekt der Klasse "String" ist unveränderlich. Das Objekt der Klasse "StringBuffer" veränderlich.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichStringStringBuffer
BasicDie Länge des String-Objekts ist festgelegt.Die Länge des StringBuffers kann erhöht werden.
ÄnderungString-Objekt ist unveränderlich.Das StringBuffer-Objekt kann geändert werden.
PerformanceWährend der Verkettung ist es langsamer.Während der Verkettung ist es schneller.
ErinnerungVerbraucht mehr Speicher.Verbraucht weniger Speicher.
LagerString-Konstantenpool.Heap-Speicher.


Definition von String

"String" ist eine Klasse in Java. Das Objekt der Klasse String hat eine feste Länge, und am wichtigsten ist, dass das Objekt der Klasse String unveränderlich ist. Sobald Sie das String-Objekt initialisiert haben, können Sie dieses Objekt nicht mehr ändern. Das Objekt der Klasse String wird im String-Konstantenpool gespeichert.

Lassen Sie uns zuerst verstehen, wann immer Sie eine Zeichenfolge erstellen; Sie erstellen ein Objekt vom Typ string. Die String-Konstanten sind auch String-Objekte.

System.out.ln ("Hallo, das ist Teckpix Solution");

In der obigen Anweisung ist die Zeichenfolge "Hallo, das ist Teckpix Solution" eine Zeichenfolgekonstante.

Lassen Sie uns nun die Veränderbarkeit des String-Objekts anhand eines Beispiels verstehen.

String str = neuer String ("Teckpix"); str.concat ("Lösung"); system.out.ln (str); // Teckpix ausgeben

Im obigen Code habe ich versucht, die beiden Zeichenfolgen "Teckpix" und "Solution" zu verketten. Wie wir wissen, wird immer dann, wenn ein String erstellt wird, das Objekt vom Typ String erstellt. Der String „Teckpix“ erzeugt also ein Objekt, dessen Referenz dem String-Objekt „str“ zugeordnet ist. Als nächstes habe ich versucht, eine andere Zeichenkette "Solution" mit der Zeichenkette "Teckpix" zu verketten, indem ich die Methode "concat ()" der Klasse "String" verwendet habe.


Da die String-Objekte unveränderlich sind, wird die Zeichenfolge „Teckpix“ nicht geändert, und die neue Zeichenfolge „Solution“ erstellt ein weiteres Objekt im String-Konstantenpool. Der Verweis auf das Objekt „Solution“ wird jedoch von keinem Objekt abgefangen, sodass der Verweis auf das Objekt Solution verloren geht, obwohl es noch im String-Konstantenpool vorhanden ist. Da keine Änderung am Objekt Teckpix vorgenommen wird, wird nur die Zeichenfolge "Teckpix" angezeigt, wenn ich das Objekt str, dem ich die Referenz von Teckpix zuvor zugewiesen habe.

Definition von StringBuffer

Die Klasse "StringBuffer" ist die Peer-Klasse der Klasse "String". Die Klasse StringBuffer bietet den Strings mehr Funktionalität. Das Objekt der StringBuffer-Klasse ist veränderbar, dh, sein Objekt kann geändert werden. Die Länge des StringBuffer-Objekts kann vergrößert werden. Sie können die Zeichen oder Teilzeichenfolgen in die Mitte des Zeichenfolgenliteral einfügen, das dem StringBuffer-Objekt oder am Ende des Objekts zugewiesen ist. StringBuffer reserviert Platz für 16 zusätzliche Zeichen, wenn keine bestimmte Länge angefordert wird.

Lassen Sie uns die Veränderbarkeit des StringBuffer-Objekts anhand eines Beispiels verstehen:

StringBuffer Sb = neuer StringBuffer ("Teckpix"); Sb.append ("Solution"); system.out.ln (Sb); // Teckpix-Lösung ausgeben

Wie wir wissen, ist das StringBuffer-Objekt veränderbar. Die Methode append () modifiziert das StringBuffer-Objekt Sb, dem zunächst die Referenz des Objekts ”Teckpix” zugewiesen wurde. Die Methode append () hängt das neue String-Literal "Solution" an das Ende des String-Literals "Teckpix" an. Jetzt wenn ich das Objekt Sb habe wird es das modifizierte String Objekt "Teckpix Solutions" sein.

  1. Die Länge eines String-Objekts ist fest, aber die Länge eines StringBuffer-Objekts kann bei Bedarf erhöht werden.
  2. Das String-Objekt ist unveränderlich, d. H. Das Objekt kann nicht erneut zugewiesen werden, wohingegen das Objekt von StringBuffer veränderlich ist.
  3. Das String-Objekt ist langsamer, während das StringBuffer-Objekt schneller ist.
  4. String-Objekte belegen mehr Speicher, während StringBuffer-Objekte weniger Speicher belegen.
  5. String-Objekte werden in einem konstanten Pool gespeichert, während StringBuffer-Objekte im Heap-Speicher gespeichert werden.

Fazit:

StringBuffer-Objekte bieten im Vergleich zur Klasse String mehr Funktionen für die Zeichenfolgen. Daher ist es vorzuziehen, mit StringBuffer anstelle der Klasse String zu arbeiten.