Heim Java javaLernprogramm Detaillierte Einführung in StringBuilder ist nicht mehr erforderlich, um Strings in Java 8 zu verbinden

Detaillierte Einführung in StringBuilder ist nicht mehr erforderlich, um Strings in Java 8 zu verbinden

Mar 18, 2017 am 11:20 AM

Unter 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).

public String concat(String str) {
    int otherLen = str.length();
    if (otherLen == 0) {
        return this;
    }
    int len = value.length;
    char buf[] = Arrays.copyOf(value, len + otherLen);
    str.getChars(buf, len);
    return new String(buf, true);
}
Nach dem Login kopieren
public static char[] copyOf(char[] original, int newLength) {
    char[] copy = new char[newLength];
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}
Nach dem Login kopieren
void getChars(char dst[], int dstBegin) {
    System.arraycopy(value, 0, dst, dstBegin, value.length);
}
Nach dem Login kopieren

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:

public class StringConcatenateDemo {
  public static void main(String[] args) {
     String str = "Hello ";
     str += "world";
   }
}
Nach dem Login kopieren

Der obige Code wird in den folgenden Bytecode kompiliert:

public class StringConcatenateDemo {
  public StringConcatenateDemo();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return
  public static void main(java.lang.String[]);
    Code:
       0: ldc           #2                  // String Hello
       2: astore_1
       3: new           #3                  // class java/lang/StringBuilder
       6: dup
       7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
      10: aload_1
      11: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      14: ldc           #6                  // String world
      16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      19: invokevirtual #7                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      22: astore_1
      23: return
}
Nach dem Login kopieren

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!

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 berechnet man das Datum vor einem Jahr oder einem Jahr später in Java 8? Wie berechnet man das Datum vor einem Jahr oder einem Jahr später in Java 8? Apr 26, 2023 am 09:22 AM

Java8 berechnet das Datum vor einem Jahr oder ein Jahr später mithilfe der minus()-Methode, um das Datum vor einem Jahr zu berechnen packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDate previousYear=today.minus(1,ChronoUni

Welche Methoden gibt es, um Stringbuilder zu löschen? Welche Methoden gibt es, um Stringbuilder zu löschen? Oct 12, 2023 pm 04:57 PM

Die Methoden zum Löschen des StringBuilder sind: 1. Verwenden Sie die Methode setLength(0), um das StringBuilder-Objekt zu löschen. 2. Verwenden Sie die Methode delete(0, length), um das StringBuilder-Objekt zu löschen. ")-Methode zum Löschen des StringBuilder-Objekts; 4. , Verwenden Sie new StringBuilder(), um ein neues StringBuilder-Objekt neu zu erstellen.

Verwenden Sie die Methode delete() der Klasse StringBuilder in Java, um einen Teil des Inhalts in der Zeichenfolge zu löschen Verwenden Sie die Methode delete() der Klasse StringBuilder in Java, um einen Teil des Inhalts in der Zeichenfolge zu löschen Jul 26, 2023 pm 08:43 PM

Verwenden Sie die delete()-Methode der StringBuilder-Klasse in Java, um einen Teil des Inhalts in einer Zeichenfolge zu löschen. Die String-Klasse ist eine häufig verwendete Zeichenfolgenverarbeitungsklasse in Java. Sie verfügt über viele häufig verwendete Methoden für Zeichenfolgenoperationen. In einigen Fällen müssen wir jedoch häufig Zeichenfolgen ändern, und die Unveränderlichkeit der String-Klasse führt dazu, dass häufig neue Zeichenfolgenobjekte erstellt werden, was sich negativ auf die Leistung auswirkt. Um dieses Problem zu lösen, stellt Java die StringBuilder-Klasse bereit

So verketten Sie Zeichenfolgen in der Go-Sprache So verketten Sie Zeichenfolgen in der Go-Sprache Jan 12, 2023 pm 04:25 PM

Methode zum Spleißen von Zeichenfolgen: 1. Verwenden Sie zum Spleißen das „+“-Zeichen. Die Syntax lautet „str = str1 + str2“. 2. Verwenden Sie zum Spleißen die Funktion sprintf () des fmt-Pakets. Die Syntax lautet „str = fmt“. Sprintf("%s%d% s", s1, i, s2)"; 3. Verwenden Sie die Join-Funktion zum Spleißen; 4. Verwenden Sie die WriteString()-Funktion des Pufferpakets zum Spleißen; 5. Verwenden Sie den Builder des Pufferpakets () Funktion zum Spleißen.

Konvertieren Sie einen String in StringBuilder in Java Konvertieren Sie einen String in StringBuilder in Java Sep 02, 2023 pm 03:57 PM

Die append()-Methode der StringBuilder-Klasse akzeptiert einen String-Wert und fügt ihn dem aktuellen Objekt hinzu. String-Wert in StringBuilder-Objekt konvertieren – String-Wert abrufen. Hängen Sie mit der Methode append() an, um die Zeichenfolge an den StringBuilder zu übertragen. Beispiel Im folgenden Java-Programm konvertieren wir ein String-Array in ein einzelnes StringBuilder-Objekt. Echtzeitdemonstration publicclassStringToStringBuilder{ publicstaticvoidmain(Stringargs[]){&a

Interpretation der Java-Dokumentation: Detaillierte Einführung in die substring()-Methode der StringBuilder-Klasse Interpretation der Java-Dokumentation: Detaillierte Einführung in die substring()-Methode der StringBuilder-Klasse Nov 03, 2023 pm 04:31 PM

Interpretation der Java-Dokumentation: Detaillierte Einführung in die substring()-Methode der StringBuilder-Klasse. Einführung: In der Java-Programmierung ist die String-Verarbeitung eine der häufigsten Operationen. Java bietet eine Reihe von Klassen und Methoden für die String-Verarbeitung, unter denen die StringBuilder-Klasse eine häufig verwendete Wahl für häufige String-Operationen ist. In der StringBuilder-Klasse ist die Methode substring() eine sehr nützliche Methode zum Abfangen von Teilzeichenfolgen von Zeichenfolgen. Dieser Artikel wird

So verwenden Sie die Funktion substring() der Klasse StringBuilder in Java, um den Teilstring eines Strings abzufangen So verwenden Sie die Funktion substring() der Klasse StringBuilder in Java, um den Teilstring eines Strings abzufangen Jul 24, 2023 pm 12:13 PM

Wie verwendet Java die Funktion substring() der Klasse StringBuilder, um einen Teilstring eines Strings abzufangen? In Java müssen wir häufig String-Operationen verarbeiten. Die StringBuilder-Klasse von Java bietet eine Reihe von Methoden, die uns die Bedienung von Strings erleichtern. Unter anderem kann die Funktion substring() verwendet werden, um Teilzeichenfolgen von Zeichenfolgen abzufangen. Die Funktion substring() hat zwei überladene Formen, nämlich substring(intstar

Verwenden Sie die StringBuilder.replace()-Funktion von Java, um einen angegebenen Zeichenbereich zu ersetzen Verwenden Sie die StringBuilder.replace()-Funktion von Java, um einen angegebenen Zeichenbereich zu ersetzen Jul 24, 2023 pm 06:12 PM

Verwenden Sie die StringBuilder.replace()-Funktion von Java, um einen bestimmten Zeichenbereich zu ersetzen. In Java stellt die StringBuilder-Klasse die Methode replace() bereit, mit der ein bestimmter Zeichenbereich in einer Zeichenfolge ersetzt werden kann. Die Syntax dieser Methode lautet wie folgt: publicStringBuilderreplace(intstart,intend,Stringstr) Die obige Methode wird verwendet, um den Indexstern von zu ersetzen

See all articles