Comment convertir Long en Int en Java
-
Utiliser le typage pour convertir un
long
en unint
en Java -
Utilisez
Math.toIntExac()
pour convertir unlong
en unint
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
.