📝 Ce que vous apprendrez
- Quel est le type de moulage ?
- Élargissement ou rétrécissement de la conversion
- Casting entre primitives
- Casting entre objets (types de référence)
- Pièges et conseils
🔁 Qu'est-ce que le Type Casting ?
La conversion de type est le processus de conversion d'une variable d'un type de données à un autre.
Il en existe deux types principaux :
- Élargissement (implicite) - des caractères plus petits aux caractères plus grands (sans danger)
- Rétrécissement (explicite) - des caractères plus grands aux caractères plus petits (nécessite un moulage)
🔹 Coulée d'élargissement (implicite)
Traitée automatiquement par Java. Pas de perte de données.
int myInt = 9;
double myDouble = myInt; // Automatic: int → double
System.out.println(myDouble); // 9.0
✅ Sûr et automatique.
🔸 Narrowing Casting (Explicite)
Doit être effectué manuellement. Possibilité de perte de données.
double myDouble = 9.78;
int myInt = (int) myDouble; // Manual cast
System.out.println(myInt); // 9 (decimal part lost)
⚠️ Peut entraîner une perte de précision ou même des résultats incorrects dans certains cas.
🧮 Casting entre types numériques
Vous pouvez passer d'un type numérique à un autre comme int
, float
, double
, etc.
long l = 1000L;
int i = (int) l; // Needs explicit cast
byte b = (byte) 130; // Overflow: result is -126
La transformation de types plus grands en types plus petits peut entraîner un débordement ou une troncature.
🔤 Casting entre char et int
char c = 'A';
int ascii = c; // Implicit: 'A' → 65
int code = 66;
char letter = (char) code; // 66 → 'B'
Utile pour travailler avec Unicode et ASCII.
🧱 Casting des types de référence (objets)
Le casting entre objets ne fonctionne que s'ils sont dans le même arbre d'héritage.
Animal a = new Dog(); // Upcasting (implicit)
Dog d = (Dog) a; // Downcasting (explicit)
Toujours vérifier le type avant de faire un casting avec instanceof
.
⚠️ Pièges courants
- Débordement/sous-débordement lors du rétrécissement
- Perte de la précision décimale
- ClassCastException lors du moulage de types d'objets incompatibles
var
ne peut pas être utilisé avec des casts explicites
📘 Recap
- Coulée d'élargissement : automatique et sûre
- Rétrécissement de la fonte : doit être manuel ; risque de perte de données
- Fonctionne pour les types primitif et objet.
- Soyez prudent avec la réduction de la portée et les modèles de référence