Dieser Artikel bietet Ihnen eine detaillierte Erklärung zur Verwendung von Javap zur Analyse von Java-String-Operationen. Ich hoffe, dass er Ihnen als Referenz dienen wird.
Sehen wir uns diese Java-Codezeile für eine einfache String-Zuweisungsoperation an.
String a = "i042416";
Verwenden Sie die Befehlszeile, um die Java-Klasse zu dekompilieren, die diese Codezeile enthält, um ihren Bytecode anzuzeigen:
javap -v konstant.ConstantFolding
Wir sehen, dass die Zeichenfolge „i042416“ vom Java-Compiler zum Konstantenpool hinzugefügt wurde.
Java-Code String a = „i042416“ wird in die folgenden zwei Sätze Bytecode übersetzt:
ldc #16: Zuerst wird die native Methode StringTable::intern am unteren Rand der JVM aufgerufen, um die interne Speicherimplementierung von String char[] zu generieren. Führen Sie dann ldc #16 aus, um die Konstante mit dem Codenamen #16 im Konstantenpool auf den Stapel zu laden, d. h. i042416.
2. astore_1: Speichern Sie die Referenz von „i042416“ in der lokalen Variablen mit der Seriennummer 1 (d. h. der lokalen Variablen a in unserem Code).
Sehen wir uns ein etwas komplexeres Beispiel an.
Führen Sie einen String-Verkettungsvorgang durch.
String aa1 = "i042416"; String aa2 = "jerrywang"; String aa3 = "i042416" + "jerrywang";
Sie können sehen, dass während der Kompilierungsphase das Compiler-Byte die Werte der beiden String-Konstanten verkettet und das Ergebnis „i042416jerrywang“ in der Variablen aa3 als neue String-Konstante gespeichert wird , in der Konstante Der Codename im Pool ist #21.
Daher zeigen die Variablen aa1 und aa3 tatsächlich auf die Konstantenpool Dieselbe Konstante in , sodass ein direkter Vergleich mit == ebenfalls „true“ zurückgibt.
String aa1 = "i042416jerrywang"; String aa2 = "jerrywang"; String aa3 = "i042416" + "jerrywang"; System.out.println(aa1 == aa3);
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!