Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen String und StringBuffer in Java? (Differenzvergleich)
Der Inhalt dieses Artikels befasst sich mit der Frage, was der Unterschied zwischen String und StringBuffer in Java ist. (Unterschiedsvergleich), es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.
String und StringBuffer sind beide Klassen für Zeichenoperationen in Java
Besonders String sehen wir oft ähnliches Ein Zuweisungscode, String str = „Hello World“, sieht aus wie int und gilt als der Basisdatentyp von Java. Tatsächlich handelt es sich bei String nicht um eine Klasse, sondern um eine spezielle Klasse, die direkt zugewiesen werden kann Datentyp.
Es gibt drei Klassen in Java, die mit Zeichen operieren können:
(1) Character ist eine Klasse, die Einzelzeichenoperationen ausführt.
(2) String ist eine unveränderliche Klasse, die mit einer Zeichenfolge arbeitet.
(3) StringBuffer arbeitet auch mit einer Zeichenfolge, es handelt sich jedoch um eine Variablenklasse.
Der Inhalt des StringBuffer-Objekts kann geändert werden. Sobald das String-Objekt generiert wurde, kann es nicht mehr geändert werden sind eigentlich zwei Dinge.
String ist ein Objekt, kein primitiver Typ; es ist ein unveränderliches Objekt, und sobald es erstellt wurde, kann sein Wert nicht geändert werden.
Durch das Ändern eines vorhandenen String-Objekts wird tatsächlich ein neues Objekt erstellt und dann der neue Wert darin gespeichert.
String ist eine letzte Klasse und kann nicht vererbt werden.
StringBuffer ist ein veränderliches Objekt. Wenn es geändert wird, wird das Objekt nicht wie String neu erstellt. Es kann nur über den Konstruktor erstellt werden. Nachdem das Objekt erstellt wurde, wird Speicherplatz zugewiesen und zunächst eine Null gespeichert. Wenn Sie StringBuffer einen Wert zuweisen, können Sie dessen Append-Methode verwenden: obj.append("hello");
StringBuffer ist bei String-Verbindungsvorgängen effizienter als String.
Wenn das Programm häufige Änderungs- und Verbindungsvorgänge an Zeichenfolgen erfordert, ist die Leistung der Verwendung von StringBuffer höher.
In der String-Klasse gibt es keine Methode zum Ändern eines Zeichens in einer vorhandenen Zeichenfolge. Da ein einzelnes Zeichen in einer Java-Zeichenfolge nicht geändert werden kann, heißt es in der JDK-Dokumentation, dass Objekte der String-Klasse sind unveränderlich.
Unveränderliche Strings haben jedoch einen großen Vorteil: Der Compiler kann den String gemeinsam nutzen.
StringBuffer ist threadsicher und kann problemlos in Multithread-Programmen verwendet werden, die Effizienz der Programmausführung ist jedoch relativ langsamer.
Die Methoden in der StringBuffer-Klasse konzentrieren sich auf Änderungen an Strings, wie Anhängen, Einfügen und Löschen usw. Dies ist auch der Hauptunterschied zwischen den StringBuffer- und String-Klassen.
String str = new String("Hello World");str += "hello world" ; Der Verarbeitungsprozess dieser String-Verbindung:
(1) Erstellen Sie einen StringBuffer; (2) Rufen Sie die append()-Methode auf
(3) Zum Schluss ruft der StringBuffer toString() auf der String-Wert
(4) Aus dieser Sicht erfordert der Verbindungsvorgang von String mehr Vorgänge als StringBuffer, und die Effizienz wird beeinträchtigt.
(5) Da String außerdem ein unveränderliches Objekt ist, wird bei jeder Neuzuweisung ein neues Objekt erstellt, sodass das ursprüngliche Objekt unbrauchbar wird und in den Müll gesammelt wird, was sich auch auf die Leistung auswirkt.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen String und StringBuffer in Java? (Differenzvergleich). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!