Ответ
Да, все основные примитивные целочисленные типы в Java (byte, short, int, long) являются знаковыми (signed). Они используют представление в дополнительном коде (two's complement) и могут хранить как положительные, так и отрицательные значения.
Диапазоны значений:
| Тип | Размер | Диапазон (от ... до) |
|---|---|---|
byte |
8 бит | -128 ... 127 |
short |
16 бит | -32,768 ... 32,767 |
int |
32 бит | -2³¹ ... 2³¹-1 (примерно ±2.14 млрд) |
long |
64 бит | -2⁶³ ... 2⁶³-1 |
Пример:
int positive = 2_147_483_647; // Integer.MAX_VALUE
int negative = -2_147_483_648; // Integer.MIN_VALUE
Особенности и работа с беззнаковыми значениями:
-
Беззнаковая арифметика: В Java нет беззнаковых (unsigned) примитивных типов. Однако, начиная с Java 8, в классы-обёртки добавлены статические методы для интерпретации значений как беззнаковых.
// Чтение беззнакового значения из строки int unsignedInt = Integer.parseUnsignedInt("4294967295"); // Сравнение двух int как беззнаковых чисел int result = Integer.compareUnsigned(a, b); -
Исключение —
char: Типcharявляется единственным 16-битным беззнаковым целочисленным типом в Java. Его диапазон: от0до65535(u0000доuffff). Он предназначен для хранения символов Unicode.