Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen String und StringBuffer-Klasse in Java

String und StringBuffer sind beide 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 anbaubar. Der grundlegende Unterschied zwischen String und StringBuffer besteht darin, dass das Objekt der Klasse "String" unveränderlich ist . Das Objekt der Klasse "StringBuffer" ist veränderbar .

Vergleichstabelle

VergleichsgrundlageStringStringBuffer
BasicDie Länge des String-Objekts ist festgelegt.Die Länge des StringBuffers kann erhöht werden.
ÄnderungString-Objekt ist unveränderlich.StringBuffer-Objekt ist veränderbar.
PerformanceWährend der Verkettung ist sie langsamer.Während der Verkettung ist es schneller.
ErinnerungVerbraucht mehr Speicherplatz.Verbraucht weniger Speicher.
LagerString konstanter Pool.Heap-Speicher

Definition von String

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

Lassen Sie uns das zuerst verstehen, wenn Sie eine Zeichenfolge erstellen. Sie erstellen ein Objekt vom Typ String. Die String-Konstanten sind ebenfalls String-Objekte.

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

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

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

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

Im obigen Code habe ich versucht, die beiden Zeichenketten "Teckpix" und "Solution" zu verketten. Wie wir wissen, wenn ein String erstellt wird, bedeutet dies, dass das Objekt vom Typ String erstellt wird. Der String "Teckpix" erzeugt also ein Objekt, dessen Referenz dem String-Objekt "str" ​​zugewiesen ist. Als Nächstes versuchte ich, eine weitere Zeichenfolge "Solution" mit der Zeichenfolge "Teckpix" unter Verwendung der Methode "concat ()" der Klasse String zu verketten.

Da die String-Objekte unveränderlich sind, wird keine Änderung an der Zeichenfolge "Teckpix" vorgenommen, und die neue Zeichenfolge "Solution" erstellt ein anderes Objekt im Konstantenpool der Zeichenfolge. Der Verweis auf das Objekt "Solution" wird jedoch von keinem Objekt erfasst. Daher geht der Verweis auf das Objekt Solution verloren, obwohl es immer noch im String-Konstantenpool vorhanden ist. Da das Objekt Teckpix nicht geändert wird, wird beim Drucken des Objekts str, dem ich die Referenz von Teckpix zuvor zugewiesen habe, nur die Zeichenfolge „Teckpix“ gedruckt.

Definition von StringBuffer

Die Klasse "StringBuffer" ist die Peer-Klasse der Klasse "String". Die Klasse StringBuffer bietet mehr Funktionalität für die Zeichenfolgen. Das Objekt der StringBuffer-Klasse ist veränderbar, dh das Objekt kann geändert werden. Die Länge des StringBuffer-Objekts kann vergrößert werden. Sie können die Zeichen oder Teilzeichenfolgen in der 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änderlichkeit des StringBuffer-Objekts anhand eines Beispiels verstehen:

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

Wie wir wissen, ist das StringBuffer-Objekt veränderbar. Die Methode append () ändert 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-Literal „Teckpix“ an. Wenn ich nun das Objekt Sb drucke, wird das modifizierte String-Objekt "Teckpix Solutions" gedruckt.

Schlüsseldifferenz zwischen String und StringBuffer

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

Fazit:

StringBuffer-Objekte bieten den Strings mehr Funktionalität als die Klasse String. Daher ist es vorzuziehen, mit StringBuffer anstelle der Klasse String zu arbeiten.

Top