Converti Long in Int in Java
-
Usa Type Casting per convertire un
longin unintin Java -
Usa
Math.toIntExac()per convertire unlongin unintin Java
Questo tutorial discute i metodi per convertire un long in un int in Java.
Usa Type Casting per convertire un long in un int in Java
Il modo più semplice per convertire un long in un int in Java è digitare cast da long a int usando (int) longVar. L’esempio seguente lo illustra:
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);
}
}
Produzione:
Value of long: 10000
Value after conversion to int: 10000
Usa Math.toIntExac() per convertire un long in un int in Java
In Java 8 e versioni successive, possiamo usare il metodo di classe Math incorporato - Math.toIntExac() per convertire un long in un int in Java. L’esempio seguente lo illustra:
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);
}
}
Produzione:
Value of long: 10000
Value after conversion to int: 10000
Questi sono i due metodi comunemente usati per convertire un long in un int in Java. Tuttavia, dobbiamo assicurarci che il valore long che abbiamo possa essere memorizzato interamente in int poiché entrambi hanno limiti di memoria diversi, 32 bit contro 64 bit.
Entrambi i metodi si comportano diversamente quando proviamo a convertire un valore long maggiore di 32 bit in un int.
L’esempio seguente illustra come si comporta il typecasting in questo 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);
}
}
Produzione:
Value of long: 10000000000
Value after conversion to int: 1410065408
Nota che il valore convertito risultante è sbagliato poiché non possiamo adattare questo valore long in una variabile int.
L’esempio sotto mostra come si comporta Math.toIntExac() in questo 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);
}
}
Produzione:
> 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)
Notare che questo metodo dà un errore di integer overflow invece di tentare erroneamente di adattare il long a un int.