Le transtypage en java consiste à la conversion d’un type à un autre (si c’est possible)
C’est en fait une conversion explicite (dans la plupart des cas), ou forcé lorsqu'elle ne serait pas effectuée implicitement.
En utilisé ce principe dans les cas suivants :
Par exemple si on utilise la méthode random() de la class Math cette fonction return par défaut un double entre 0 et 1,alors qu’on est besoin d’un int. Par exemple, dans ce cas on peut procède comme suite :
int a = (int) Math.random()*100 ; //on ne prend que la partie entière
En générale ,pour effectuer un transtypage, il suffit de mettre le type de données voulu entre parenthèses à gauche de n'importe quelle valeur.
Si vous avez compris l’exemples précèdent ,alors les affectations suivantes sont implicitement autorisées entre entiers et/ou réels ; on peut affecter un byte à un short, ou un float à un double
Autrement dit :
byte ou short --> int --> long --float --> double
int i=1 ;
float f=12 ;
double d=123 ;
f=i;//c est OK
d=f;//c est ok ausii
i=f;//ou i=d ;nn car le variable i est de type(int ) inférieur au variable f et d
i=(int ) f ; //la c est ok
int i=10;
long l=11;
float f=12;
double d=123;
//affectations implicitement autorisée
i=i+1;
f=f+i;
d=f+i;
d=f*3.5d;
//affectations nécessitant une conversion
i=(int) f;
f=(float)d;
l=(long)d;
i=(int)f+(int)l;
l=(long)(i*d);
//il y on a d autre cas, mais ce qu’il il faut tenir compte hiérarchie
// short >> int >> long >>> float >> double
//un int peut support un short/ un long peut support int et/ou long / …
}
}
Ce qui est bon en Java c’est permet de (transtyper) n'importe quel type primitif vers n'importe quel autre type primitif. (+ ou -, par ce que le type booléen pose un problème dans certain cas)
Il reste a dire que la somme (ou soustraction) de deux opérandes qui ne sont pas de même type le résultat est de type le plus supérieur.
Maintenant, passant au code qui permet d’effectuer cette conversion :
Code convertir String à un int / float / double
String s="2011";
int i =Integer.parseInt(s);
float f=Float.parseFloat(s);
double d=Double.parseDouble(s);
long l=Long.parselong(s);
On a utilisé les Classes Integer et Float et Double et Long pour convertir le variable de type String "s", a des variables de type numérique.
Supposons, maintenant qu’on veut faire le contraire c'est-à-dire qu’on veut convertir un variable numérique à un String, là on a beaucoup de solution :
Le code de conversion sera :
int i=2011;
long l=i;
float f=i;
double d=i;
String s1=Integer.toString(i);
Sting s2=Long.toString(l);
Sting s3=Float.toString(f);
String s4=Double.toString(d);
int i=2011;
long l=i;
float f=i;
double d=i;
String s1= s1.valueOf(i);
Sting s2= s2.valueOf(l);
Sting s3= s3.valueOf(f);
String s4= s4.valueOf(d);
Comme vous pouvez le voir les méthode toString() et valueOf(); peuvent prendre en paramètre des valeurs numérique de type int,double,float,long,et même des variable boolean , char et tableau de caractère .sans oublie Object.
long l=i;
float f=i;
double d=i;
String s1= i+"";
Sting s2= l+"";
Sting s3= f+"";
String s4= d+"";
C’est en fait une conversion explicite (dans la plupart des cas), ou forcé lorsqu'elle ne serait pas effectuée implicitement.
En utilisé ce principe dans les cas suivants :
- si il risque d’y avoir perte d’information
- Si on veut prendre la partie entière d’un réel (ou double).
Par exemple si on utilise la méthode random() de la class Math cette fonction return par défaut un double entre 0 et 1,alors qu’on est besoin d’un int. Par exemple, dans ce cas on peut procède comme suite :
int a = (int) Math.random()*100 ; //on ne prend que la partie entière
En générale ,pour effectuer un transtypage, il suffit de mettre le type de données voulu entre parenthèses à gauche de n'importe quelle valeur.
Si vous avez compris l’exemples précèdent ,alors les affectations suivantes sont implicitement autorisées entre entiers et/ou réels ; on peut affecter un byte à un short, ou un float à un double
Autrement dit :
byte ou short --> int --> long --float --> double
Exemple :
int i=1 ;
float f=12 ;
double d=123 ;
f=i;//c est OK
d=f;//c est ok ausii
i=f;//ou i=d ;nn car le variable i est de type(int ) inférieur au variable f et d
i=(int ) f ; //la c est ok
Règle à suivre :
Lorsque les deux opérandes d’un opérateur ne sont pas du même type, celui qui est de type inférieur est converti dans le type de l’autre.
Autre exemple
int i=10;
long l=11;
float f=12;
double d=123;
//affectations implicitement autorisée
i=i+1;
f=f+i;
d=f+i;
d=f*3.5d;
//affectations nécessitant une conversion
i=(int) f;
f=(float)d;
l=(long)d;
i=(int)f+(int)l;
l=(long)(i*d);
//il y on a d autre cas, mais ce qu’il il faut tenir compte hiérarchie
// short >> int >> long >>> float >> double
//un int peut support un short/ un long peut support int et/ou long / …
}
}
Ce qui est bon en Java c’est permet de (transtyper) n'importe quel type primitif vers n'importe quel autre type primitif. (+ ou -, par ce que le type booléen pose un problème dans certain cas)
Il reste a dire que la somme (ou soustraction) de deux opérandes qui ne sont pas de même type le résultat est de type le plus supérieur.
- Transformer une valeur de type String en valeur numérique (ou inversement)
Maintenant, passant au code qui permet d’effectuer cette conversion :
Code convertir String à un int / float / double
String s="2011";
int i =Integer.parseInt(s);
float f=Float.parseFloat(s);
double d=Double.parseDouble(s);
long l=Long.parselong(s);
On a utilisé les Classes Integer et Float et Double et Long pour convertir le variable de type String "s", a des variables de type numérique.
Supposons, maintenant qu’on veut faire le contraire c'est-à-dire qu’on veut convertir un variable numérique à un String, là on a beaucoup de solution :
- On utilise les Classes Integer, Float , Double ,Long qui redéfinissent la méthode toString() ;
Le code de conversion sera :
int i=2011;
long l=i;
float f=i;
double d=i;
String s1=Integer.toString(i);
Sting s2=Long.toString(l);
Sting s3=Float.toString(f);
String s4=Double.toString(d);
- On peut aussi utilisé la méthode valueOf() de la Classe String ,qui permet de rassemble la valeur de la variable numérique a convertir dans un variable de type String
int i=2011;
long l=i;
float f=i;
double d=i;
String s1= s1.valueOf(i);
Sting s2= s2.valueOf(l);
Sting s3= s3.valueOf(f);
String s4= s4.valueOf(d);
Comme vous pouvez le voir les méthode toString() et valueOf(); peuvent prendre en paramètre des valeurs numérique de type int,double,float,long,et même des variable boolean , char et tableau de caractère .sans oublie Object.
- la troisième façon c’est ma préféré, on n’utilise aucune méthode mais seulement une simple propriétés des String. sont code est le suivant :
long l=i;
float f=i;
double d=i;
String s1= i+"";
Sting s2= l+"";
Sting s3= f+"";
String s4= d+"";
En attente de vos remarques vos commentaires