Cómo convertir Long a Int en Java

Hassan Saeed 12 octubre 2023
  1. Usa Type Casting para convertir una long en una int en Java
  2. Usa Math.toIntExac() para convertir una long en una int en Java
Cómo convertir Long a Int 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.

Artículo relacionado - Java Int