Преобразование long в int на Java — все способы с примерами

Тип long хранит более широкий диапазон чисел, чем int. Превратить long в int можно тремя способами — но всегда есть риск потерять данные, если число слишком большое.

Пример 1: long в int через явное приведение типа

Самый простой способ — явное приведение (int).

class Main {
  public static void main(String[] args) {

    // create long variables
    long a = 2322331L;
    long b = 52341241L;

    // convert long into int
    // using typecasting
    int c = (int)a;
    int d = (int)b;

    System.out.println(c);    // 2322331
    System.out.println(d);    // 52341241
  }
}

Вывод:

2322331
52341241

Это сужающее преобразование (narrowing typecasting) — большой тип превращаем в меньший. Пока значение long укладывается в максимум int (2147483647), всё работает корректно.

Предупреждение

Если число типа long больше максимума int, при приведении произойдёт потеря данных — старшие биты просто отбросятся.

Пример 2: long в int через метод toIntExact()

Метод Math.toIntExact() делает то же самое, но безопаснее: если число не помещается в int, он сразу выбросит исключение.

class Main {
  public static void main(String[] args) {

    // create long variable
    long value1 = 52336L;
    long value2 = -445636L;

    // change long to int
    int num1 = Math.toIntExact(value1);
    int num2 = Math.toIntExact(value2);

    // print the int value
    System.out.println(num1);  // 52336
    System.out.println(num2);  // -445636
  }
}

Вывод:

52336
-445636

Метод Math.toIntExact() возвращает значение типа int. Если же исходное число выходит за диапазон int, он бросает исключение переполнения:

// value out of range of int
long value = 32147483648L

// throws the integer overflow exception
int num = Math.toIntExact(value);

Пример 3: преобразование объекта класса Long в int

Если у нас есть не примитив long, а объект класса-обёртки Long, превратить его в int помогает метод intValue().

class Main {
  public static void main(String[] args) {

    // create an object of Long class
    Long obj = 52341241L;

    // convert object of Long into int
    // using intValue()
    int a = obj.intValue();

    System.out.println(a);    // 52341241
  }
}

Вывод:

52341241

Здесь obj — это объект класса-обёртки Long. Метод intValue() извлекает из него целочисленное значение и возвращает примитив int.