Maison > Java > javaDidacticiel > Comment fonctionnent réellement l'auto boxing et le unboxing en Java ?

Comment fonctionnent réellement l'auto boxing et le unboxing en Java ?

Linda Hamilton
Libérer: 2024-11-19 19:11:03
original
730 Les gens l'ont consulté

How Do Auto Boxing and Unboxing Really Work in Java?

Boxing et déballage automatiques en Java : dévoilement des mécanismes cachés

Le boxing et le déballage automatiques, introduits dans Java JDK 5.0, simplifient la conversion entre types primitifs et leurs classes wrapper correspondantes. Cependant, le fonctionnement exact de ces concepts peut prêter à confusion.

Auto Boxing : le wrapper à multiples facettes

Au départ, il peut sembler que l'auto boxing repose uniquement sur le constructeur implémenté. dans la classe wrapper. Cependant, fouiller dans le bytecode d'Integer.class révèle une autre histoire.

Integer n = 42;
Copier après la connexion

Compile vers :

0: bipush        42
2: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: astore_1      
Copier après la connexion

Le bytecode utilise la méthode valueOf() au lieu du constructeur. Cette approche offre des avantages tels que la mise en cache, évitant la création d'objets redondants.

Déballage automatique : récupération de l'essence primitive

De même, le déballage automatique implique la récupération de la valeur primitive enveloppée dans l'objet via la méthode intValue() pour les entiers, ou des méthodes analogues pour d'autres types de wrapper.

int n = Integer.valueOf(42);
Copier après la connexion

Compile vers :

0: bipush        42
2: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: invokevirtual #22                 // Method java/lang/Integer.intValue:()I
8: istore_1      
Copier après la connexion

Conclusion

Essentiellement, le boxing et le unboxing automatiques fonctionnent en invoquant les méthodes statiques valueOf() ou instance intValue() appropriées sur les classes wrapper. Ce mécanisme permet une conversion transparente entre les représentations primitives et basées sur des objets, améliorant ainsi la lisibilité et l'efficacité du code.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal