Ответ
Диапазоны значений примитивных типов в Java определяются их размером в битах и способом представления (дополнительный код для целых чисел).
Основные типы и их ограничения:
| Тип | Размер | Диапазон значений |
|---|---|---|
byte |
8 бит | от -128 до 127 |
short |
16 бит | от -32 768 до 32 767 |
int |
32 бита | от -2³¹ (-2 147 483 648) до 2³¹-1 (2 147 483 647) |
long |
64 бита | от -2⁶³ до 2⁶³-1 |
float |
32 бита | ~±3.4e-38 до ~±3.4e+38 (с плавающей точкой, IEEE 754) |
double |
64 бита | ~±1.7e-308 до ~±1.7e+308 |
Пример переполнения (overflow):
int maxInt = Integer.MAX_VALUE; // 2 147 483 647
System.out.println(maxInt + 1); // -2 147 483 648 (переполнение!)
Для работы с числами вне этих диапазонов используйте классы BigInteger (для целых) и BigDecimal (для чисел с плавающей точкой), которые хранят числа в виде объектов произвольной точности.