Bonjour
ma question est simple: Comment connaitre les types des variables?
Bonjour
ma question est simple: Comment connaitre les types des variables?
Si ce sont des object:
objet.getClass().getame();
au fait
j'ai déclaré deux variable, une de type Int et l'autre de type Integer
J'ai fait d'autres traitements, des affectations et des conversions avec intValue() sur ces deux variables. Je voudrai m'assurer à la fin le type de i et de g
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int i = 12; Integer g = new Integer(i);
ya t'il une méthode qui me retourne le type?
autre question dans la foulée SVP
je voudrai savoir la différence exacte entre le type int et Integer. Je voudrai un exemple concrets car j'ai compris que le premier est un type simple et le seconde est un type objet
mais comment se manifeste la différence dans les traitements?
qu'est ce que l'autoboxing?
La méthode pour trouver la classe (et non le type) t'as été donnée par tchize_ (avec une légère faute d'orthographe).
Je pense qu'il y a quelque chose quelque part que tu n'as pas compris. Il n'y a aucun besoin de vérifier le type, la classe, ou quoique ce soit de ce genre : le compilateur le fait pour toi, et java t'oblige à le déclarer à un moment ou a un autre.
Tu peux faire toutes les transformations que tu veux sans crainte : le compilateur et la machine virtuelle te surveillent.
Ainsi, le type de i et de g ne risquent absolument pas de changer pendant le processus : int et Integer ils sont, int et Integer ils resteront.
le type basique "int" n'hérite pas de objet, il n'as pas de constructeur, pas de propriétés, par de méthodes, il a juste une valeur.
Integer est un objet, donc quand tu déclare Integer g, tu déclare que tu va stocker dans g un référence à un object. T'aura donc des méthodes et des propriétés dessus.
L'auto(un)boxing, c'est la capacité qu'à le compilateur à
remplacer "i" par "new Integer(i)" quand tu passe i (de type int) là ou la déclaration de méthode exige un Object ou un Integer. C'est aussi cette capacité qu'il à a remplacer l'appel "g" par "g.intValue()" à ou tu passe g (de type integer) alors qu'il faudrait un int.
Dans l'absolu, le type de g et i ne change jamais, c'est juste le compilateur qui réécrit tes appels quand tu passe i ou g en arguments de méthode ou quand tu les utilises dans les calculs. Sans auto(un)boxing, il faudrait écrire ce code à la main, c'est pas bien dur mais c'est chiant et çà rend le code plus opaque.
merci gifffftane et tchize_ pour vos réponses
au fait c'est parce que j'ai fait pas mal de conversion avec intValue() et que je me perds à la fin
je voulais savoir est ce que le intValue() est de trop ou non? Si on affecte une variable de type Integer à une variable de type int, que se passe t'il
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int i = 12; String j = new String(); j = j.valueOf(i); // j est de type string ayant la valeur "12" System.out.println(j.getClass().getName()); //java.lang.String System.out.println(j+5); //125 System.out.println(i+5); //17 int k = Integer.valueOf(j); //k=12 de type int System.out.println(k+6); //18 int t = Integer.valueOf(j).intValue(); //convertit j en integer ensuite en int avec intValue()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int i = 12; String j = Integer.toString(i) // j est de type string ayant la valeur "12" System.out.println(j.getClass().getName()); //java.lang.String System.out.println(j+5); //125, soit la concaténation de j et "5" System.out.println(i+5); //17 int k = Integer.valueOf(j); //parse j. k=12 de type int System.out.println(k+6); //18 int t = Integer.valueOf(j).intValue(); //parse j en Integer et extrait sa valeur // autre option // int t = Integer.valueOf(j); // utilisation de autounboxing pour convertir Integer en int
tchize_
si j'ai bien compris, grace à l' autounboxing, dans la dernière ligne
Je n'ai plus besoin du intValue() pour rendre j en "int"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int t = Integer.valueOf(j).intValue(); //parse j en Integer et extrait sa valeur // autre option // int t = Integer.valueOf(j); // utilisation de autounboxing pour convertir Integer en int
voilà, avec l'autoboxing, int et Integer peuvent etre mélangés
Partager