Ответ
Максимальный диапазон значений в Java определяется разрядностью (количеством бит) примитивных типов данных и их представлением в памяти (знаковое/беззнаковое).
Основные типы и их пределы:
| Тип | Размер | Диапазон |
|---|---|---|
byte |
8 бит | -128 до 127 |
short |
16 бит | -32 768 до 32 767 |
int |
32 бита | -2³¹ до 2³¹-1 (≈ ±2.14 млрд) |
long |
64 бита | -2⁶³ до 2⁶³-1 (≈ ±9.22×10¹⁸) |
char |
16 бит | 0 до 65 535 (беззнаковый) |
Почему именно такие пределы?
- Для знаковых целых типов (
byte,short,int,long) используется дополнительный код (two's complement). Один бит отводится под знак, поэтому диапазон несимметричен (например, дляint: -2³¹ до 2³¹-1). - Максимальные значения доступны через константы классов-обёрток:
int maxInt = Integer.MAX_VALUE; // 2_147_483_647
long maxLong = Long.MAX_VALUE; // 9_223_372_036_854_775_807
int maxArraySize = Integer.MAX_VALUE - 8; // Практический предел размера массива
Для работы с числами вне диапазона используется класс BigInteger (произвольная точность).