Cómo convertir Long a Int en Java
-
Usa Type Casting para convertir una
long
en unaint
en Java -
Usa
Math.toIntExac()
para convertir unalong
en unaint
en Java
Este tutorial discute los métodos para convertir una long
a una int
en Java.
Usa Type Casting para convertir una long
en una int
en Java
La forma más simple de convertir un long
en un int
en Java es escribir long
en el int
usando (int) longVar
. El siguiente ejemplo ilustra esto:
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);
}
}
Resultado:
Value of long: 10000
Value after conversion to int: 10000
Usa Math.toIntExac()
para convertir una long
en una int
en Java
En Java 8 y superiores, podemos usar el método de clase Math
incorporado - Math.toIntExac()
para convertir una long
a una int
en Java. El siguiente ejemplo ilustra esto:
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);
}
}
Resultado:
Value of long: 10000
Value after conversion to int: 10000
Estos son los dos métodos comúnmente usados para convertir una long
a una int
en Java. Sin embargo, necesitamos asegurarnos de que el valor long
que tenemos puede ser almacenado enteramente en la int
, ya que ambos tienen diferentes límites de memoria, 32 bits contra 64 bits.
Ambos métodos se comportan de manera diferente cuando intentamos convertir un valor long
que es mayor de 32 bits en una int
.
El siguiente ejemplo ilustra cómo se comporta el encasillamiento en este caso.
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);
}
}
Resultado:
Value of long: 10000000000
Value after conversion to int: 1410065408
Observa que el valor convertido resultante está equivocado ya que no podemos ajustar este valor long
en una variable int
.
El siguiente ejemplo ilustra cómo se comporta Math.toIntExac()
en este caso.
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);
}
}
Resultado:
> 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)
Note que este método da un error de integer overflow
en lugar de intentar erróneamente ajustar el long
a una int
.