Maison > Java > javaDidacticiel > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-20 02:59:01
original
657 Les gens l'ont consulté

How Does Auto Boxing and Unboxing Really Work in Java?

Boxing et déballage automatiques en Java : une plongée plus approfondie

Depuis son introduction dans JDK 5.0, le boxing et le déballage automatiques sont une fonctionnalité pratique en Java. Cependant, une confusion surgit lorsqu'on essaie de comprendre les mécanismes sous-jacents de ces processus.

Auto Boxing

Auparavant, on pensait que l'auto boxing reposait uniquement sur des constructeurs implémentés dans le wrapper cours. Cependant, l'examen du bytecode révèle une autre histoire.

Pour boxer un int dans un Integer :

Integer n = 42;
Copier après la connexion

Le compilateur génère :

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
Copier après la connexion

Cela montre que le La méthode valueOf() est utilisée à la place d’un constructeur. Ce choix de conception permet la mise en cache et empêche la création d'objets inutiles pendant le boxing.

Déballage automatique

De même, le déballage n'implique pas directement les constructeurs. Par exemple, pour déballer un Integer en un int :

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

Le bytecode équivalent est :

bipush 42
invokestatic java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java/lang/Integer.intValue:()I
Copier après la connexion

Ici, la méthode intValue() récupère la valeur primitive de l'objet wrapper.

Conclusion

Le boxing et le déballage automatiques en Java sont implémentés via les méthodes valueOf() et *Value(), respectivement. Ces méthodes permettent des conversions efficaces entre les classes wrapper et les types primitifs, offrant la commodité et la flexibilité sur lesquelles s'appuient les développeurs.

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