Leçon 9 : Transtypage et conversion de type
La conversion de type, ou casting, est le processus consistant à changer une valeur d'un type de données à un autre.
1. Conversion implicite (Widening Conversion)
Cela se produit automatiquement lors de la conversion d'un type plus petit vers un type plus grand (ex: int vers double). Java effectue cela automatiquement car il n'y a aucun risque de perte de données.
java int myInt = 100; double myDouble = myInt; // Conversion implicite : 100 devient 100.0
// Ordre d'élargissement (sûr) : byte -> short -> int -> long -> float -> double
long largeNum = 500000; float approxNum = largeNum; // Valide, mais la précision peut être perdue si le long est immense
2. Conversion explicite (Narrowing Conversion)
Cela nécessite d'instruire manuellement le compilateur à l'aide de parenthèses (). C'est nécessaire lors de la conversion d'un type plus grand vers un type plus petit (ex: double vers int). Une perte de données est possible.
java double salary = 50000.75;
// On cast explicitement le double en int int wholeSalary = (int) salary; // wholeSalary sera 50000 (le .75 est perdu)
byte b; int i = 257; // On force la conversion, mais les données sont perdues/rebouclées b = (byte) i; // b sera 1 (puisque 257 > 127)
System.out.println(b); // Sortie : 1
3. Conversion impliquant des Strings (Non-primitifs)
Convertir des primitifs en Strings et inversement nécessite des méthodes utilitaires, généralement issues des classes wrappers (comme Integer ou Double).
-
Primitif vers String : java int num = 45; String s1 = String.valueOf(num); String s2 = num + ""; // Raccourci courant
-
String vers Primitif : java String s = "123"; // Utilisation de la méthode parse sur la classe wrapper int i = Integer.parseInt(s); // i vaut maintenant 123
String priceStr = "99.50"; double price = Double.parseDouble(priceStr);