Converti Long in Int in Java
-
Usa Type Casting per convertire un
long
in unint
in Java -
Usa
Math.toIntExac()
per convertire unlong
in unint
in 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
.