Преобразование 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.