Autoboxing est la conversion automatique du compilateur Java entre les types primitifs et leurs objets de classe wrapper correspondants, c'est-à-dire la conversion de int en Integer, double en Double, etc. Unboxing est la conversion automatique des objets de classe wrapper vers leurs primitives équivalentes, c'est-à-dire Entier à entier. La fonctionnalité a été introduite dans la version 1.5 de Java.
Le compilateur utilise la méthode valueOf() pour convertir les primitives en objets wrapper correspondants (c'est-à-dire l'autoboxing) en interne, et dans le cas inverse, il utilise intValue(), doubleValue(), etc., comme paradigmes pour le déballage.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Le mappage du type primitif et de la classe wrapper en Java est le suivant :
Primitive type | Wrapper class |
boolean | Boolean |
byte | Byte |
char | Character |
float | Float |
int | Integer |
long | Long |
short | Short |
double | Double |
Prenons une ArrayList d'entiers et utilisons le concept de déballage.
import java.util.ArrayList; public class MyClass { public static void main(String args[]) <em>{</em> ArrayList<Integer> intlist = new ArrayList<Integer>(); //wrapper Integer objects being added here intlist.add(1); interest.add(2); //auto-unboxing is happening here int x = intlist.get(0); System.out.println(x); } }
Par conséquent, dans l'exemple ci-dessus, en ajoutant de la valeur à x, nous voyons que x semble être primitif. En conséquence, le déballage s'effectue ici automatiquement pendant que la mission est terminée.
public class MyClass { public static void main(String args[]) { Integer sum =0; for(int i=0;i<10;i++) { sum = sum + i; } System.out.println(sum); } }
Considérez l'extrait placé ci-dessous ; quel sera le résultat de cela ?
public class Main { public static void main(String[] args) { Integer m = 34123; Integer x = 34123; System.out.println(x==m); } }
public class Main { public static void main(String[] args) { Integer m = 100; Integer x = 100; System.out.println(x==m); } }
Ceci sera évalué à la « vraie » valeur, car 100 est présent dans le pool littéral.
public class Main { public static void main(String[] args) { Overload obj = new Overload(); int i =5; obj.printval(5); Integer m = i; obj.printval(m); } } class Overload { public void printval(int i) { System.out.println("printing the unboxed value "+ i); } public void printval(Integer i) { System.out.println("printing the autoboxed value "+ i); } }
Sortie :
Remarque : Vous pouvez exécuter le programme ci-dessus dans n'importe lequel des IDE pour obtenir le résultat ci-dessus.Nous avons vu le cas d'utilisation de l'autoboxing et du unboxing et à quel point ce concept est implicite, ainsi que ses avantages et ses inconvénients. Il doit être utilisé avec prudence lors du codage ; sinon, cela peut ajouter une surcharge de conversion informatique inutile. Par conséquent, les conversions doivent être effectuées dans les primitives pour éviter une surcharge excessive de garbage collection et la création d'objets temporaires. Nous avons également vu le cas d'utilisation de l'autoboxing avec le concept de surcharge en Java. Vous pouvez vérifier quelques contraintes supplémentaires en même temps.
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!