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 die Begriffe Sozialismus und Kommunismus oft in einem Atemzug…
Die Welt der Flaggensymbolik Haben Sie sich schon einmal die Zeit genommen, die Geschichte hinter…
Haben Sie schon einmal ein Passwort vergessen? Sicher, das ist uns allen schon passiert. Deshalb…
Der Hauptunterschied zwischen einem 4-Takt-Motor und einem 2-Takt-Motor besteht darin, dass ein 4-Takt-Motor vier Stufen…
Haben Sie sich jemals gefragt, ob es tatsächlich einen Unterschied zwischen japanischen und chinesischen Augen…
Abgeltungssteuer: Arten, Regelungen und wichtige Informationen zu Kapitalerträgen Die Abgeltungssteuer ist eine der zentralen Steuerarten…