Vergleichstabelle
Vergleichsgrundlage | String | StringBuffer |
---|---|---|
Basic | Die Länge des String-Objekts ist festgelegt. | Die Länge des StringBuffers kann erhöht werden. |
Änderung | String-Objekt ist unveränderlich. | StringBuffer-Objekt ist veränderbar. |
Performance | Während der Verkettung ist sie langsamer. | Während der Verkettung ist es schneller. |
Erinnerung | Verbraucht mehr Speicherplatz. | Verbraucht weniger Speicher. |
Lager | String 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.
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
- Die Länge des String-Objekts ist festgelegt, aber die Länge eines Objekts von StringBuffer kann bei Bedarf erhöht werden.
- String-Objekt ist unveränderlich, dh das Objekt kann nicht erneut zugewiesen werden, während das Objekt von StringBuffer veränderbar ist.
- Das String-Objekt ist langsamer, während das StringBuffer-Objekt schneller ist.
- String-Objekte verbrauchen mehr Speicher, wohingegen StringBuffer-Objekte weniger Speicher verbrauchen.
- 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.