


Detaillierte Einführung in StringBuilder ist nicht mehr erforderlich, um Strings in Java 8 zu verbinden
Mar 18, 2017 am 11:20 AMUnter Java-Entwicklern ist der hohe Ressourcenverbrauch des String--Spleißens oft ein heißes Thema
Lassen Sie uns ausführlich besprechen, warum es so viele Ressourcen beansprucht.
In Java ist ein StringObjekt unveränderlich, d. h. sobald es erstellt wurde, können Sie es nicht mehr ändern. Wenn wir also Strings verketten, wird ein neuer String erstellt und der alte vom Garbage Collector markiert.
Wenn wir Millionen von Zeichenfolgen verarbeiten, generieren wir Millionen zusätzlicher Zeichenfolgen, die vom Garbage Collector verarbeitet werden.
Die unterste Ebene der virtuellen Maschine führt beim Spleißen von Zeichenfolgen viele Vorgänge aus. Der direkteste Punktoperator zum Verketten von Zeichenfolgen ist die Operation String#concat(String).
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 |
|
1 2 3 |
|
Sie können sehen, dass ein Zeichenarray erstellt wird und die Länge die Summe der vorhandenen Zeichen und der gespleißten Zeichenlänge ist. Ihre Werte werden dann in ein neues Zeichenarray kopiert. Erstellen Sie abschließend ein String-Objekt aus diesem Zeichenarray und geben Sie es zurück.
Diese Operationen sind also zahlreich. Wenn Sie sie berechnen, werden Sie feststellen, dass die Komplexität O(n^2) ist.
Um dieses Problem zu lösen, verwenden wir die StringBuilder-Klasse. Es ist wie eine veränderbare String-Klasse. Die Spleißmethode hilft uns, unnötige Duplikate zu vermeiden. Es hat eine Komplexität von O(n), was weitaus besser ist als O(n^2).
Java 8 verwendet jedoch standardmäßig StringBuilder, um Zeichenfolgen zu verketten.
In der Dokumentation für Java 8 heißt es :
Um die Leistung der String-Verkettung zu verbessern, kann der Java-Compiler die StringBuffer-Klasse oder eine ähnliche Technologie verwenden. Reduzieren Sie die Erstellung von String-Zwischenobjekten, wenn der Wert Ausdruck ist.
Der Java-Compiler behandelt diese Situation:
1 2 3 4 5 6 |
|
Der obige Code wird in den folgenden Bytecode kompiliert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Sie können Wie in gesehen Für diese Bytecodes wird StringBuilder verwendet. Daher müssen wir die StringBuilder-Klasse in Java 8 nicht mehr verwenden.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in StringBuilder ist nicht mehr erforderlich, um Strings in Java 8 zu verbinden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie berechnet man das Datum vor einem Jahr oder einem Jahr später in Java 8?

So verketten Sie Zeichenfolgen in der Go-Sprache

Konvertieren Sie einen String in StringBuilder in Java

Verwenden Sie die StringBuilder.replace()-Funktion von Java, um einen angegebenen Zeichenbereich zu ersetzen

Welche Methoden gibt es, um Stringbuilder zu löschen?

Verwenden Sie die Methode delete() der Klasse StringBuilder in Java, um einen Teil des Inhalts in der Zeichenfolge zu löschen

Interpretation der Java-Dokumentation: Detaillierte Einführung in die substring()-Methode der StringBuilder-Klasse

So verwenden Sie die Funktion substring() der Klasse StringBuilder in Java, um den Teilstring eines Strings abzufangen
