Contents
Ein Puffer ist ein Teil des Speichers, der zum Speichern eines Datenstroms von Peripheriegeräten verwendet wird. Dann wird dieser Datenstrom aus diesem Puffer gesammelt und in Variablen gespeichert. Ein Stream kann als kontinuierlicher Datenfluss definiert werden. Der Puffer ist sehr nützlich, da Java alles als String behandelt.
Strings in Java sind Objekte, die intern von einem Char-Array unterstützt werden. Da Arrays unveränderlich sind (nicht wachsen können), sind Strings ebenfalls unveränderlich. Immer wenn eine Änderung an einem String vorgenommen wird, wird ein völlig neuer String erstellt.
Warum String in Java unveränderlich oder final ist. Die Zeichenfolge ist in Java unveränderlich, da Zeichenfolgenobjekte im Zeichenfolgenpool zwischengespeichert werden. Gleichzeitig wurde String endgültig gemacht, damit niemand die Invariante der String-Klasse, z. B. Unveränderlichkeit, Caching, Hashcode-Berechnung usw., durch Erweitern und Überschreiben von Verhaltensweisen kompromittieren kann.
StringBuffer/StringBuilder wird viel effizienter implementiert, indem ein Array aller Strings erstellt und nur bei Bedarf in einen String zurückkopiert wird. Überspringen von x + 2x + 3x im Wesentlichen bis (n-1)x. Der einzige Kopiervorgang, der ausgeführt werden muss, tritt auf, wenn die Zeichenfolge zum Kopieren bereit ist.
Ein StringBuffer-Objekt kann mit der toString()-Methode der Object-Klasse in einen String konvertiert werden. Im obigen Code soll die Methode equals() auf String-Objekte, aber nicht auf StringBuffer-Objekte angewendet werden; das heißt, sb1. euqals(sb2) löst einen Fehler aus. Um also zwei StringBuffer-Objekte zu vergleichen, müssen sie in Strings konvertiert werden.
Lesen Sie auch: == Operator vs. gleich ()
Grundlage des Vergleichs | Schnur | Zeichenfolgenpuffer |
Lagerung | String-Pool | Haufen Speicher |
Wandlungsfähigkeit | Unveränderlich | Veränderlich |
Leistung | Langsamer als StringBuffer beim Ausführen der Verkettung | Schneller als String bei der Durchführung der Verkettung |
Länge | Fest | Kann erhöht werden |
Verwendung in Thread-Umgebung | Wird nicht in einer Thread-Umgebung verwendet | Wird in einer Multithread-Umgebung verwendet |
Synchronisation | Nicht synchronisiert | Synchronisiert |
Syntax | String-Variable = „String“; String-Variable = neuer String (“String”); | StringBuffer-Variable = neuer StringBuffer(“String”); |
Lesen Sie auch: Unterschied zwischen Wurf und Würfen
Da String in Java unveränderlich ist, wird bei jeder String-Manipulation wie Verkettung, Teilstring usw. ein neuer String generiert und der ältere String für die Garbage Collection verworfen.
Dies sind schwere Operationen und erzeugen eine Menge Müll in Haufen. Daher hat Java die Klassen StringBuffer und StringBuilder bereitgestellt, die für die String-Manipulation verwendet werden sollten.
StringBuffer war bis Java 1.4 die einzige Wahl für die String-Manipulation. Es hat jedoch einen Nachteil, dass alle seine öffentlichen Methoden synchronisiert sind. StringBuffer bietet Thread-Sicherheit, jedoch auf Kosten der Leistung.
In den meisten Szenarien verwenden wir String nicht in einer Multithread-Umgebung. Daher führte Java 1.5 eine neue Klasse StringBuilder ein, die StringBuffer ähnelt, abgesehen von Thread-Sicherheit und Synchronisation.
StringBuffer und StringBuilder sind veränderliche Objekte in Java. Sie bieten append()-, insert()-, delete()- und substring()-Methoden für die String-Manipulation.
Der Hauptunterschied zwischen StringBuffer und StringBuilder besteht darin, dass StringBuffer threadsicher ist, StringBuilder jedoch nicht. Dies bedeutet, dass, wenn verschiedene Threads auf dieselbe Instanz eines StringBuffer zugreifen/ diese ändern, ihr Zugriff so synchronisiert wird, dass das Ergebnis immer vorhersehbar ist. Da StringBuilder auch für die Verwendung durch einen einzelnen Thread konzipiert ist, sind die Operationen darauf schneller als die von StringBuffer, ansonsten haben sie größtenteils identische Methoden.
Haben Sie sich jemals gefragt, warum Sie manchmal bei Einkäufen Ihre PIN eingeben müssen und…
Haben Sie sich jemals gefragt, warum Ärzte manchmal eine CT-Untersuchung und in anderen Fällen ein…
Haben Sie sich jemals gefragt, warum manche Menschen von ihrem "Lohn" sprechen, während andere ihr…
Seide oder Baumwolle: Ein ewiger Wettstreit um Weichheit und Komfort 🧵🌿 Haben Sie sich jemals…
Haben Sie sich jemals gefragt, warum manche Radfahrer scheinbar mühelos Steigungen erklimmen, während andere ins…
Staubsaugen - eine lästige Pflicht, die niemand gerne erledigt. 🧹 Doch in der Welt der…