📝 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 :

  1. Élargissement (implicite) - des caractères plus petits aux caractères plus grands (sans danger)
  2. 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