Maison > Java > javaDidacticiel > Explication détaillée de l'utilisation de javap pour analyser les opérations de chaîne Java

Explication détaillée de l'utilisation de javap pour analyser les opérations de chaîne Java

不言
Libérer: 2018-10-22 15:23:26
avant
2098 Les gens l'ont consulté

Cet article vous apporte une explication détaillée de l'utilisation de javap pour analyser les opérations sur les chaînes Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Regardons cette ligne de code Java pour une simple opération d'affectation de chaîne.

String a = "i042416";
Copier après la connexion

Utilisez la ligne de commande pour décompiler la classe Java contenant cette ligne de code pour afficher son bytecode :

javap -v constant.ConstantFolding

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

On voit que la chaîne "i042416" a été ajoutée au pool de constantes par le compilateur Java.

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

La chaîne de code Java a = "i042416" est traduite dans les deux phrases de bytecode suivantes :

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

ldc #16 : Tout d'abord, la méthode native StringTable::intern en bas de la JVM est appelée pour générer l'implémentation de stockage interne de String char[]. Exécutez ensuite ldc #16 pour charger la constante nommée #16 dans le pool de constantes sur la pile, c'est-à-dire i042416.

2. astore_1 : stockez la référence de "i042416" dans la variable locale avec le numéro de série 1 (c'est-à-dire la variable locale a dans notre code).

Regardons un exemple légèrement plus complexe.

Effectuez une opération de concaténation de chaînes.

String aa1 = "i042416";
String aa2 = "jerrywang";
String aa3 = "i042416" + "jerrywang";
Copier après la connexion

Vous pouvez voir que pendant la phase de compilation, l'octet du compilateur concatène les valeurs des deux constantes de chaîne, et le résultat "i042416jerrywang" est stocké dans la variable aa3 en tant que nouvelle chaîne constante, nom de code #21 dans le pool de constantes.

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

Par conséquent, les variables aa1 et aa3 pointent en fait vers le pool constant La même constante dans , donc une comparaison directe avec == retournera également true.

String aa1 = "i042416jerrywang";
String aa2 = "jerrywang";
String aa3 = "i042416" + "jerrywang";
System.out.println(aa1 == aa3);
Copier après la connexion

Explication détaillée de lutilisation de javap pour analyser les opérations de chaîne Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal