Conversion de Type en Java

Introduction à la Conversion de Type

La conversion de type désigne le processus de transformation d'une valeur d'un type de donnée en un autre type. Ce phénomène est fréquent lorsque les données sont présentes dans un format et que le programme doit les utiliser dans un autre. Un exemple courant est lorsqu'une opération mathématique nécessite une valeur de type float, mais l'un des opérandes est un entier. De même, lors de la manipulation des données saisies par l'utilisateur, qui sont souvent sous forme de chaînes (String) et doivent être interprétées comme des nombres.

Conversion entre Types Numériques

Dans certaines situations, Java peut effectuer la conversion de type de manière automatique si les types sont compatibles. Cela se produit surtout lorsqu'un type de données plus petit, comme un int, est attribué à une variable d'un type plus grand, comme un long.

// Conversion automatique de type
int x = 15;
long y = 0L;
y = x; // y est maintenant 15L

Ce processus est aussi connu sous le nom de "widening" (élargissement) et suit une certaine hiérarchie :

byte -> short -> int -> long -> float -> double

Tous les types de données peuvent être « élargis » pour s’adapter à un type qui se trouve à droite dans cette liste.

Cependant, pour convertir vers un type de données plus petit (en se déplaçant vers la gauche sur cette liste), une conversion explicite ou un "type casting" est nécessaire.

// Casting explicite
type long
g = 15L;
int y = 0;
y = (int)x; // y est maintenant 15

Conversion de Chaînes en Types Numériques

Les valeurs de type String ne sont pas directement compatibles avec les types numériques. Toutefois, Java propose des sous-classes pour les types numériques primitifs : Byte, Integer, Double, Float, Long et Short. Chacune de ces sous-classes possède une méthode .parseXXXX() qui prend une chaîne et renvoie son équivalent en type numérique.

// Conversion d'une chaîne en un nombre à l'aide des méthodes .parseXXXX()
String s = "15";
// Conversion d'une chaîne en entier.
int x = Integer.parseInt(s); // x est maintenant 15
// Conversion d'une chaîne en float.
float y = Float.parseFloat(s); // y est maintenant 15f

Conversion de Types Numériques en Chaînes

La transformation de nombres en chaînes peut se faire de plusieurs manières. Lorsque vous concaténez un nombre avec une chaîne, la conversion se fait automatiquement :

// Conversion automatique d'un entier en chaîne
int i = 15;
String s = "" + i; // s contient désormais la valeur "15"

La méthode String.valueOf() peut également être utilisée :

// Conversion d'un entier en chaîne via la méthode .valueOf()
int i = 15;
String s = String.valueOf(i); // s contient maintenant la valeur "15"

Chaque sous-classe de Number fournit également une méthode .toString() qui convertit son type numérique associé en une chaîne :

// Conversion d'un entier en chaîne via la méthode .toString()
int i = 15;
String s = Integer.toString(i); // s contient maintenant la valeur "15"