Conversion de variables en Java

Mohammad Irfan 12 octobre 2023
  1. Casting implicite en Java
  2. Casting explicite en Java
  3. Éviter CastException en Java
Conversion de variables en Java

Ce didacticiel explique comment convertir des variables ou convertir une variable en un autre type en Java.

La conversion est utilisée pour convertir/convertir une valeur/variable en un autre type dans un langage de programmation. Java prend en charge un riche ensemble de types de données tels que int, float, double, boolean, etc., et lors de l’écriture de code, il peut être nécessaire de convertir des variables.

Java prend en charge deux types de transtypage, le transtypage implicite et explicite. Si nous transformons int en long ou double, alors Java le fait implicitement parce que long et double utilisent plus d’octets que int, et nous faisons l’inverse (c’est-à-dire, convertir double en int), cela peut entraîner une perte de données en raison de la capacité entière.

Ainsi, Java permet le transtypage implicite entre les types de données inférieurs vers les types supérieurs, mais le transtypage explicite des types supérieurs vers les types inférieurs. Comprenons avec quelques exemples.

Casting implicite en Java

Ici, dans cet exemple, on transtype int en type float, transtypage implicite. Étant donné que Java permet le casting implicite sans beaucoup de code, ce code fonctionne bien.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 23;
    System.out.println("int " + a);
    // int to float - implicit casting
    float f = a;
    System.out.println("float " + f);
  }
}

Production :

int 23
float 23.0

Casting explicite en Java

Dans certains cas, Java nécessite un transtypage explicite en raison de la perte de données.

Par exemple, si nous transformons un float en int, alors la valeur après la virgule est tronquée ; c’est pourquoi Java ne le fait pas implicitement et génère une erreur de compilation. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    float a = 23;
    System.out.println("float " + a);
    // float to int - explicit casting
    int f = a;
    System.out.println("int " + f);
  }
}

Production :

Type mismatch: cannot convert from float to int

Cette erreur de compilation est un avertissement au programmeur pour éviter cette perte de données. Si le programmeur souhaite toujours effectuer un cast, Java autorise un opérateur de cast qui met le nom du type entre parenthèses de fonction.

Ce compilateur compile et exécute le code mais voit que la valeur est tronquée. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    float a = 23.5f;
    System.out.println("float " + a);
    // float to int - explicit casting
    int f = (int) a;
    System.out.println("int " + f);
  }
}

Production :

float 23.50
int 23

Nous pouvons également utiliser la méthode cast() pour convertir la valeur de l’objet en une valeur primitive. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    Integer a = 23;
    System.out.println("integer " + a);
    // float to int - explicit casting
    int i = (Integer.class.cast(a));
    System.out.println("int " + i);
  }
}

Production :

integer 23
int 23

Éviter CastException en Java

La diffusion d’objets Java est également une préoccupation majeure qui nécessite un type de classe approprié avant la diffusion. Par exemple, si nous transtypons un type float avec double, Java ne le permet pas et lance ClassCastException sur la console.

Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    Number num = new Float(15.5);
    System.out.println(num);
    Double d = (Double) num;
    System.out.println(d);
  }
}

Production :

15.5
Exception in thread "main" java.lang.ClassCastException

Article connexe - Java Casting