Maîtriser le transtypage Java : De l'élargissement au rétrécissement et au-delà
Maîtriser le transtypage Java : De l'élargissement au rétrécissement et au-delà
Ce guide démystifie le transtypage (type casting) en Java, couvrant ses formes principales avec des exemples clairs.
Avant d'aborder le transtypage Java, assurez-vous de comprendre les types de données Java.
Le transtypage
Le processus de conversion d'une valeur d'un type de donnée (int, float, double, etc.) vers un autre est appelé transtypage.
Java propose 13 types de conversions, mais ce tutoriel se concentre sur les deux catégories principales :
- Transtypage par élargissement (Widening)
- Transtypage par rétrécissement (Narrowing)
Pour une liste complète, voir la documentation officielle Java sur la conversion de types.
Transtypage par élargissement (Widening)
En transtypage par élargissement, Java promeut automatiquement un primitif plus petit vers un plus grand, sans perte de données.
Exemple : Conversion int vers double
class Main {
public static void main(String[] args) {
int nombre = 10;
System.out.println("Valeur entière : " + nombre);
double donnee = nombre;
System.out.println("Valeur double : " + donnee);
}
}
Sortie
Valeur entière : 10 Valeur double : 10.0
Ceci montre comment une variable int est promue en double avant affectation. Cette conversion automatique est aussi appelée transtypage implicite.
Note : Les conversions par élargissement sont sûres et effectuées par le compilateur.
Transtypage par rétrécissement (Narrowing)
Avec le transtypage par rétrécissement, vous devez explicitement caster un primitif plus grand vers un plus petit à l'aide de parenthèses.
Exemple : Conversion double vers int
class Main {
public static void main(String[] args) {
double nombre = 10.99;
System.out.println("Valeur double : " + nombre);
int donnee = (int) nombre;
System.out.println("Valeur entière : " + donnee);
}
}
Sortie
Valeur double : 10.99 Valeur entière : 10
Le cast (int) tronque la partie fractionnaire, illustrant pourquoi cette conversion est explicite et peut entraîner une perte de données.
Note : Java n'effectue pas automatiquement les conversions par rétrécissement.
Exemple 1 : int vers String
class Main {
public static void main(String[] args) {
int nombre = 10;
System.out.println("Valeur entière : " + nombre);
String donnee = String.valueOf(nombre);
System.out.println("Valeur chaîne : " + donnee);
}
}
Sortie
Valeur entière : 10 Valeur chaîne : 10
String.valueOf() convertit l'entier en sa représentation textuelle.
Exemple 2 : String vers int
class Main {
public static void main(String[] args) {
String donnee = "10";
System.out.println("Valeur chaîne : " + donnee);
int nombre = Integer.parseInt(donnee);
System.out.println("Valeur entière : " + nombre);
}
}
Sortie
Valeur chaîne : 10 Valeur entière : 10
L'analyse repose sur Integer.parseInt(). Si la chaîne ne peut être analysée, une NumberFormatException est levée.
Note : Validez l'entrée pour éviter les exceptions à l'exécution.
Java
- Maîtriser la conversion et le transtypage de types en Python : Guide complet
- Types de données primitifs en Java : Guide complet avec exemples
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser l'encapsulation Java : guide pratique pour le masquage de données
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques