Heim Java javaLernprogramm Einführung in die Unterschiede zwischen String, StringBuffer und StringBuilder in Java

Einführung in die Unterschiede zwischen String, StringBuffer und StringBuilder in Java

Jan 22, 2017 am 11:31 AM

String, StringBuffer und StringBuilder in Java sind String-Klassen, die häufig in der Programmierung verwendet werden. Die Unterschiede zwischen ihnen sind auch Fragen, die häufig in Interviews gestellt werden. Lassen Sie uns nun zusammenfassen und ihre Unterschiede und Gemeinsamkeiten betrachten.

1. Variabel und unveränderlich

Die String-Klasse verwendet ein Zeichenarray, um die Zeichenfolge zu speichern, wie unten gezeigt. Aufgrund des Modifikators „final“ können Sie erkennen, dass das Zeichenfolgenobjekt unveränderlich ist .

 private final char value[];

Sowohl StringBuilder als auch StringBuffer erben in AbstractStringBuilder auch Zeichenarrays zum Speichern von Zeichenfolgen Objekte können geändert werden.

 Char[] value;

2. Ist es Multi-Thread-sicher?

Die Objekte in String sind unveränderlich und können als Konstanten verstanden werden, die offensichtlich Thread-sicher sind. sicher.

AbstractStringBuilder ist die gemeinsame übergeordnete Klasse von StringBuilder und StringBuffer. Sie definiert einige grundlegende Operationen von Zeichenfolgen, wie z. B. expandCapacity, append, insert, indexOf und andere öffentliche Methoden.

StringBuffer fügt der Methode eine Synchronisationssperre hinzu oder fügt der aufrufenden Methode eine Synchronisationssperre hinzu, sodass sie threadsicher ist. Schauen Sie sich den folgenden Quellcode an:

public synchronized StringBuffer reverse() {
    super.reverse();
    return this;
}
public int indexOf(String str) {
    return indexOf(str, 0);        //存在 public synchronized int indexOf(String str, int fromIndex) 方法
}
Nach dem Login kopieren

StringBuilder fügt der Methode keine Synchronisationssperren hinzu, daher ist sie nicht threadsicher.

3. Was StringBuilder und StringBuffer gemeinsam haben

StringBuilder und StringBuffer haben eine gemeinsame übergeordnete Klasse, AbstractStringBuilder (abstrakte Klasse).

Einer der Unterschiede zwischen abstrakten Klassen und Schnittstellen besteht darin, dass abstrakte Klassen nur einige öffentliche Methoden von Unterklassen definieren müssen und keine vorhandenen Methoden neu schreiben müssen Definition von Konstanten.

Die Methoden von StringBuilder und StringBuffer rufen die öffentlichen Methoden in AbstractStringBuilder auf, z. B. super.append(...). Es ist nur so, dass StringBuffer das synchronisierte Schlüsselwort zur Synchronisierungsmethode hinzufügt.

Wenn das Programm nicht über mehrere Threads verfügt, ist die Verwendung von StringBuilder effizienter als StringBuffer.

Weitere verwandte Artikel zu den Unterschieden zwischen String, StringBuffer und StringBuilder in Java finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann man in Java Remote -Debugging konstante Werte auf Remote -Servern korrekt erhalten? Wie kann man in Java Remote -Debugging konstante Werte auf Remote -Servern korrekt erhalten? Apr 19, 2025 pm 01:54 PM

Fragen und Antworten zum ständigen Akquisition beim Remote -Debuggen von Java Bei der Verwendung von Java für das entfernte Debuggen können viele Entwickler auf schwierige Phänomene stoßen. Es...

Wie wähle ich Java-Projektmanagement-Tools beim Erlernen von Back-End-Entwicklung aus? Wie wähle ich Java-Projektmanagement-Tools beim Erlernen von Back-End-Entwicklung aus? Apr 19, 2025 pm 02:15 PM

Verwechselt mit der Auswahl von Java -Projektmanagement -Tools für Anfänger. Für diejenigen, die gerade erst anfangen, Backend -Entwicklung zu lernen, ist die Auswahl der richtigen Projektmanagement -Tools von entscheidender Bedeutung ...

Wenn Tomcat Spring-Web-Module lädt, zerstört der SPI-Mechanismus dann das Sichtbarkeitsprinzip der Lader der Java-Klasse? Wenn Tomcat Spring-Web-Module lädt, zerstört der SPI-Mechanismus dann das Sichtbarkeitsprinzip der Lader der Java-Klasse? Apr 19, 2025 pm 02:18 PM

Analyse des Klassenbelastungsverhaltens des SPI-Mechanismus beim Lasten von Feder-Web-Modulen. Tomcat wird verwendet, um den von Spring-Web bereitgestellten Servel beim Laden von Feder-Web-Modulen zu entdecken und zu verwenden ...

Was ist der Grund, warum der Browser nicht reagiert, nachdem der WebSocket -Server 401 zurückgegeben hat? Wie löst ich es? Was ist der Grund, warum der Browser nicht reagiert, nachdem der WebSocket -Server 401 zurückgegeben hat? Wie löst ich es? Apr 19, 2025 pm 02:21 PM

Die nicht reagierende Methode des Browsers, nachdem der WebSocket -Server 401 zurückgegeben hat. Wenn Sie Netty zur Entwicklung eines WebSocket -Servers verwenden, müssen Sie häufig auf das Token überprüft werden. � ...

Warum meldet es einen Fehler beim Einreichen eines Pyflink -Jobs auf Garn? Warum meldet es einen Fehler beim Einreichen eines Pyflink -Jobs auf Garn? Apr 19, 2025 pm 02:06 PM

Analyse des Grundes, warum das Python -Skript nicht gefunden werden kann, wenn Sie einen Pyflink -Job auf Garn einreichen, wenn Sie versuchen, einen Pyflink -Job über Garn einzureichen. Sie können begegnen ...

Wie modifiziere ich den Parameter SavePath von @Excel Annotation in Easypoi dynamisch, wenn das Projekt in Java beginnt? Wie modifiziere ich den Parameter SavePath von @Excel Annotation in Easypoi dynamisch, wenn das Projekt in Java beginnt? Apr 19, 2025 pm 02:09 PM

So konfigurieren Sie die Parameter von Entitätsklassenanmerkungen in Java während des Entwicklungsprozesses dynamisch.

Endgültige Konsistenz in verteilten Systemen: Wie kann man Daten inkonsistenzen anwenden und diese kompensieren? Endgültige Konsistenz in verteilten Systemen: Wie kann man Daten inkonsistenzen anwenden und diese kompensieren? Apr 19, 2025 pm 02:24 PM

Die Anwendung der endgültigen Konsistenz in verteilten Systemen verteilte Transaktionsverarbeitung war schon immer ein Problem in der verteilten Systemarchitektur. Um das Problem zu lösen ...

Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Apr 19, 2025 pm 02:30 PM

Wie Verwenden Sie den Occess_Token von OAuth2.0, um die Steuerung der Schnittstellenzugriffsberechtigungen zu erhalten? Wie können Sie bei der Anwendung von OAuth2.0 sicherstellen, dass die ...

See all articles