Heim > Java > javaLernprogramm > Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

不言
Freigeben: 2018-10-22 15:23:26
nach vorne
2105 Leute haben es durchsucht

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";
Nach dem Login kopieren

Verwenden Sie die Befehlszeile, um die Java-Klasse zu dekompilieren, die diese Codezeile enthält, um ihren Bytecode anzuzeigen:

javap -v konstant.ConstantFolding

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

Wir sehen, dass die Zeichenfolge „i042416“ vom Java-Compiler zum Konstantenpool hinzugefügt wurde.

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

Java-Code String a = „i042416“ wird in die folgenden zwei Sätze Bytecode übersetzt:

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

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";
Nach dem Login kopieren

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.

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

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);
Nach dem Login kopieren

Ausführliche Erläuterung der Verwendung von Javap zur Analyse von Java-String-Operationen

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!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage