Como converter Long para Int em Java
-
Utilize o tipo de fundição para converter um
longpara umintem Java -
Utilize
Math.toIntExac()para converter umlongpara umintem Java
Este tutorial discute métodos para converter um long para um int em Java.
Utilize o tipo de fundição para converter um long para um int em Java
A maneira mais simples de converter um long para um int em Java é digitar o long para o int utilizando (int) longVar. O exemplo abaixo ilustra isso:
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
Utilize Math.toIntExac() para converter um long para um int em Java
No Java 8 e acima, podemos utilizar o método da classe Math incorporado - Math.toIntExac() para converter um long para um int em Java. O exemplo abaixo ilustra isso:
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
Estes são os dois métodos comumente utilizados para converter um long para um int em Java. Entretanto, precisamos garantir que o valor long que temos possa ser armazenado inteiramente no int, já que ambos têm limites de memória diferentes, 32 bits contra 64 bits.
Ambos os métodos se comportam de forma diferente quando tentamos converter um valor long que é maior que 32 bits para um int.
O exemplo abaixo ilustra como a digitação se comporta neste 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
Observe que o valor convertido resultante está errado, pois não podemos encaixar este valor long em uma variável int.
O exemplo abaixo ilustra como o Math.toIntExac() se comporta neste 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 dá um erro de integer overflow em vez de tentar encaixar erroneamente o valor long em um int.