Comment convertir Long en Int en Java

Hassan Saeed 12 octobre 2023
  1. Utiliser le typage pour convertir un long en un int en Java
  2. Utilisez Math.toIntExac() pour convertir un long en un int en Java
Comment convertir Long en Int en Java

Ce tutoriel traite des méthodes pour convertir un long en un int en Java.

Utiliser le typage pour convertir un long en un int en Java

La façon la plus simple de convertir un long en int en Java est de taper transtyper le long en int en utilisant int longVar. L’exemple ci-dessous illustre cette méthode:

public class MyClass {
  public static void main(String args[]) {
    long myLong = 10000l;
    int myInt = (int) myLong;
    System.out.println("Value of long: " + myLong);
    System.out.println("Value after conversion to int: " + myInt);
  }
}

Production:

Value of long: 10000
Value after conversion to int: 10000

Utilisez Math.toIntExac() pour convertir un long en un int en Java

En Java 8 et supérieur, nous pouvons utiliser la méthode de classe intégrée Math - Math.toIntExac() pour convertir un long en un int en Java. L’exemple ci-dessous illustre cette possibilité:

public class MyClass {
  public static void main(String args[]) {
    long myLong = 10000l;
    int myInt = Math.toIntExact(myLong);
    System.out.println("Value of long: " + myLong);
    System.out.println("Value after conversion to int: " + myInt);
  }
}

Production:

Value of long: 10000
Value after conversion to int: 10000

Ce sont les deux méthodes couramment utilisées pour convertir un long en un int en Java. Cependant, nous devons nous assurer que la valeur de long que nous avons peut être entièrement stockée dans int puisque les deux ont des limites de mémoire différentes, 32 bits contre 64 bits.

Les deux méthodes se comportent différemment lorsque nous essayons de convertir une valeur long supérieure à 32 bits en une int.

L’exemple ci-dessous illustre le comportement du typecasting dans ce cas.

public class MyClass {
  public static void main(String args[]) {
    long myLong = 10000000000l;
    int myInt = (int) myLong;
    System.out.println("Value of long: " + myLong);
    System.out.println("Value after conversion to int: " + myInt);
  }
}

Production:

Value of long: 10000000000
Value after conversion to int: 1410065408

Notez que la valeur convertie résultante est erronée puisque nous ne pouvons pas ajuster cette valeur long dans une variable int.

L’exemple ci-dessous illustre comment se comporte Math.toIntExac() dans ce cas.

public class MyClass {
  public static void main(String args[]) {
    long myLong = 10000000000l;
    int myInt = Math.toIntExact(myLong);
    System.out.println("Value of long: " + myLong);
    System.out.println("Value after conversion to int: " + myInt);
  }
}

Production:

> Exception in thread "main" java.lang.ArithmeticException: integer overflow
	at java.base/java.lang.Math.toIntExact(Math.java:1071)
	at MyClass.main(MyClass.java:4)

Notez que cette méthode donne une erreur de integer overflow au lieu d’essayer par erreur de faire correspondre la valeur long à une int.

Article connexe - Java Int