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.
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…
Einleitung: Die Evolution der mobilen Kommunikationstechnologie hat einen bedeutenden Meilenstein erreicht, als 4G (LTE) zu…
Einleitung: JPG und PNG sind zwei gängige Bildformate, die im Internet weit verbreitet sind. Obwohl…