Maison > Java > javaDidacticiel > Comment fonctionne le boxing/unboxing automatique en Java ?

Comment fonctionne le boxing/unboxing automatique en Java ?

Barbara Streisand
Libérer: 2024-11-14 12:37:02
original
411 Les gens l'ont consulté

How Does Auto Boxing/Unboxing Work in Java?

Boxing/Unboxing automatique en Java

Le boxing et le déballage automatiques en Java simplifient les conversions de types entre les types de données primitifs et leurs classes wrapper correspondantes. Introduite dans JDK 5.0, cette fonctionnalité offre une intégration transparente de ces deux représentations.

Auto Boxing

Lors de l'attribution d'une valeur primitive à une variable de classe wrapper, une boxe automatique se produit . Contrairement à l’hypothèse selon laquelle le constructeur de la classe wrapper est utilisé, la méthode statique valueOf() est invoquée à la place. Cela est évident dans le bytecode généré pour le code suivant :

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

La méthode valueOf() met en cache les objets créés, garantissant l'efficacité des ressources.

Déballage automatique

À l'inverse, lors de l'extraction d'une valeur primitive d'une variable de classe wrapper, un déballage automatique se produit. Ce processus utilise la méthode intValue() pour les entiers (et des méthodes analogues pour d'autres types), comme illustré dans le bytecode pour :

int n = Integer.valueOf(42);
Copier après la connexion
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

Cette méthode renvoie simplement la valeur primitive stockée dans l'objet wrapper. .

En résumé, le boxing/unboxing automatique implique l'utilisation de méthodes statiques valueOf() et intValue() (ou similaire) pour convertir de manière transparente entre les représentations de classe primitives et wrapper. Cela simplifie le code et améliore les performances en utilisant des mécanismes de mise en cache.

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