Conversion entre différents types de données
Conversion entre types primitifs
Lorsqu'il s'agit de types primitifs (ou encore nommés élémentaires: float, int, char, ..., voir Types élémentaires des variables), il est possible d'utiliser le cast pour effectuer une conversion:
Le cast s'écrit en indiquant le type élémentaire que l'on veut obtenir. Par exemple:
int monEntier = 10;
float monFlottant = (float) monEntier;
La variable monFlottant recevra alors la valeur 10 dans le format "flottant".
Il est possible de
perdre de l'informations lors d'un cast si la variable recevant l'information
"castée" n'est pas capable de stocker en totalité cette
information.
Une conversion numérique ne pourra se faire que sur les types primitifs suivant: byte, short, int, long, char, float et double.
Il n'est pas possible de convertir un type primitif en type objet.
Convertir un type primitif en type Objet
Ou conversion en type objet...
A chaque type élémentaire, il existe une classe portant le même nom mais où (classe oblige) la première lettre est en majuscule (exception pour int qui devient Integer, ...):
Byte, Double, Float, Integer, Long, Short
Dans ce cas, pour effectuer une conversion, vous devrez passer par une méthode de cette classe.
Par exemple:
La classe java.lang.Integer à un type int et une méthode toString pour convertir un int en texte.
Ou en utilisant le constructeur de la classe qui peut recevoir le type primitif en paramètre.
Ex.:
int x=10;
Float f=new Float(x);
f sera alors positionnée à 10.0
Convertir un type objet en type primitif
Sur le même principe, il sera possible en passant par des méthodes de convertir un type objet en type primitif.
Les méthodes se nomment quelque soit la classe:
byteValue(), doubleValue, floatValue, IntValue, longValue et shortValue
Exemple
Convertir une chaîne de caractères en type objet
Chaque classe possède une méthode pour convertir une chaîne de caractères dans son format.
Nous pouvons passer par le constructeur d'un type objet.
Ou nous utiliserons des méthodes statiques parseType
où Type sera remplacé par Byte, Double, Float, Integer, Long, Short.
Par exemple:
String s="150";
Integer i=new Integer("10");
System.out.println ("Valeur de i="+i);
i=Integer.parseInt(s);
System.out.println ("Valeur de i="+i);
Limite lors des conversions
Java n'indique pas si le nombre à convertir peut tenir ou non dans le nouveau type. Il faudra donc faire soit même les contrôles.
Il existe des constantes dans chacun des types objets:
MAX_VALUE pour indiquer la valeur maximal autorisée.
MIN_VALUE pour la valeur minimal autorisée.
De même, la constante SIZE retournera le nombre de bits utilisé pour stocker un nombre.
Convertion de base 10 en base n
Certaines classes pourront retourner le résultat d'une conversion d'un nombre en base 10 vers une autre base comme hexadécimale, octale):
Les méthodes sont les suivantes:
toHexString(valeur). Exemple Integer.toHexString(10) retournera la valeur a.
toBinaryString(valeur)
toOctalString(valeur)
Opérations spécifiques
Ce sont des opérations un peu plus spécifiques, mais il sera possible de faire des opérations du genre:
Connaître le nombre de bits occupés par un nombre:Integer.bitCount()
Integer.lowestOneBit() indique le premier bit positionné pour un nombre
Integer.highestOneBit indique le dernier bit positionné pour un nombre
Il est possible d'effectuer des rotations binaires:
Integer.rotateLeft(nombre, distance)
Integer.rotateRight(nombre, distance)
ou distance représente le nombre de rotation à faire.
Integer.reverse(nombre) pour inverser tous les bits d'un nombre
Autres
Concaténation avec l'opérateur +
+ permet de concaténer une série de types primitifs ou objets en une chaine de caractères. Elle peut donc remplacer la méthode concat() de String.