Converti Long in Int in Java

Hassan Saeed 12 ottobre 2023
  1. Usa Type Casting per convertire un long in un int in Java
  2. Usa Math.toIntExac() per convertire un long in un int in Java
Converti Long in Int 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.

Articolo correlato - Java Int