Heim Java javaLernprogramm Detaillierte Einführung in String StringBuilder und StringBuffer in Java und Anwendungsbeispiele

Detaillierte Einführung in String StringBuilder und StringBuffer in Java und Anwendungsbeispiele

Mar 06, 2017 am 10:12 AM

In diesem Artikel werden hauptsächlich die detaillierten Erklärungen und Verwendungsbeispiele von String StringBuilder und StringBuffer in Java vorgestellt.

In der Android-/Java-Entwicklung wird es zum Verarbeiten von Zeichenfolgen verwendet drei häufig verwendete Klassen: String, StringBuilder und StringBuffer.

Ihre Gemeinsamkeiten und Unterschiede:

1) Sie sind beide Abschlussklassen und dürfen nicht vererbt werden;
2) Die Stringlänge ist unveränderlich , die Längen von StringBuffer und StringBuilder sind variabel;
3) StringBuffer ist threadsicher, StringBuilder ist jedoch nicht threadsicher.

String VS StringBuffer

Der Hauptleistungsunterschied zwischen String-Typ und StringBuffer: String ist ein unveränderliches Objekt, daher ändert sich der String-Typ jedes Mal. Es wird ein neues String-Objekt generiert, und der Zeiger zeigt auf das neue String-Objekt. Daher ist es am besten, String nicht für Zeichenfolgen zu verwenden, deren Inhalt sich häufig ändert, da dies jedes Mal Auswirkungen hat, wenn ein Objekt generiert wird Systemleistung, insbesondere wenn keine Referenzen im Speicher vorhanden sind, beginnt der GC der JVM zu arbeiten und die Leistung nimmt ab.

Bei Verwendung der StringBuffer-Klasse werden Operationen jedes Mal am StringBuffer-Objekt selbst ausgeführt, anstatt neue Objekte zu generieren und Objektreferenzen zu ändern. Daher wird in den meisten Fällen die Verwendung von StringBuffer empfohlen, insbesondere wenn sich String-Objekte häufig ändern.

In einigen Sonderfällen wird die String-Verkettung von String-Objekten tatsächlich vom Java-Compiler in die Verkettung von StringBuffer-Objekten kompiliert, sodass in diesen Fällen die Geschwindigkeit von String-Objekten nicht langsamer ist als die von StringBuffer-Objekten, zum Beispiel:

String s1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
Nach dem Login kopieren

Die Geschwindigkeit der Generierung von String s1-Objekten ist nicht langsamer als bei StringBuffer. Tatsächlich wird im Java Compiler die folgende Konvertierung automatisch durchgeführt:

Java Compiler kompiliert die erste Anweisung oben direkt in:

String s2 = “This is only a”; 
String s3 = “ simple”; 
String s4 = “ test”; 
String s1 = s2 + s3 + s4;
Nach dem Login kopieren

Zu diesem Zeitpunkt wird der Java-Compiler die Verkettungsoperation (d. h. +) von String über die Append-Methode von StringBuilder (oder StringBuffer) implementieren, wenn s2, s3 s4 verwendet die String-Definition. Sie müssen einen zusätzlichen StringBuffer (oder StringBuilder) erstellen. Wenn Sie StringBuffer (oder StringBuilder) verwenden, müssen Sie keinen zusätzlichen StringBuffer erstellen.

StringBuilder

StringBuilder ist neu in 5.0. Diese Klasse stellt eine StringBuffer-kompatible API bereit, garantiert jedoch keine Synchronisierung. Diese Klasse ist als Ersatz für StringBuffer konzipiert, wenn der String-Puffer von einem einzelnen Thread verwendet wird (was häufig vorkommt). Es wird empfohlen, nach Möglichkeit diese Klasse zu bevorzugen, da sie in den meisten Implementierungen schneller als StringBuffer ist. Die Methoden sind für beide grundsätzlich gleich.

Nutzungsstrategie

1) Grundprinzipien: Wenn Sie eine kleine Datenmenge verarbeiten möchten, verwenden Sie String, wenn Sie eine große Datenmenge verarbeiten möchten Wenn Sie einen einzelnen Thread verwenden möchten, verwenden Sie StringBuilder. Wenn Sie eine große Datenmenge mit einem einzelnen Thread verarbeiten möchten, verwenden Sie StringBuffer.

2) Verwenden Sie nicht das „+“ der String-Klasse, da die Leistung extrem schlecht ist. Dies ist ein wichtiger Punkt bei der Java-Optimierung . Prinzip. Zum Beispiel:

String result = ""; 
for (String s : hugeArray) { 
 result = result + s; 
} 

// 使用StringBuilder 
StringBuilder sb = new StringBuilder(); 
for (String s : hugeArray) { 
 sb.append(s); 
} 
String result = sb.toString();
Nach dem Login kopieren

Wenn die obige Situation auftritt, müssen wir natürlich jedes Mal die zweite Methode verwenden, weil die erste Methode Die Schleife erstellt ein String-Ergebnis, um das Ergebnis zu speichern, mit der Ausnahme, dass die beiden grundsätzlich gleich sind.

3) StringBuilder wird im Allgemeinen innerhalb von Methoden verwendet, um Funktionen abzuschließen, die „+“ ähneln, da es threadunsicher ist. Sie können es also nach Gebrauch wegwerfen. StringBuffer wird hauptsächlich in globalen Variablen verwendet.

4) Durch die Verwendung von StirngBuilder kann im Vergleich zur Verwendung von StringBuffer unter den gleichen Umständen nur eine Leistungsverbesserung von etwa 10 bis 15 % erzielt werden, es besteht jedoch das Risiko einer Multithreading-Unsicherheit. Bei der tatsächlichen modularen Programmierung kann der für ein bestimmtes Modul verantwortliche Programmierer möglicherweise nicht eindeutig beurteilen, ob das Modul in einer Multithread-Umgebung ausgeführt wird. Daher: Es sei denn, es wird festgestellt, dass der Engpass des Systems bei StringBuffer liegt Sie sind sicher, dass StringBuilder nur verwendet werden kann, wenn das Modul nicht im Multithread-Modus ausgeführt wird. Andernfalls wird StringBuffer weiterhin verwendet.

Das Obige ist eine detaillierte Einführung in die detaillierte Erklärung und Verwendungsbeispiele von String StringBuilder und StringBuffer in Java. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


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)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Feb 07, 2025 pm 12:11 PM

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo

See all articles