Минимальное значение не может быть сохранено в байтах - PullRequest
0 голосов
/ 06 декабря 2018

Согласно https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html байт в Java имеет вид:

"Тип данных байта - это 8-разрядное целое число с двоичным знаком со знаком. Он имеет минимальное значение -128 и максимальное значениеиз 127 (включительно). "

Если я напишу максимальное значение (127) в форме дополнения до двух в Java, я смогу сохранить его в виде байта.

byte positive127 = 0b01111111;

Однако,если я пытаюсь сделать то же самое для минимального значения -128, оно интерпретируется как целое число.Я не могу сохранить его в байте.

byte negative127 = 0b10000000;

Изображение из IDE

Может кто-нибудь объяснить мне, почему это невозможно, когда в документации говорится, чтотип байта должен содержать это значение?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

0b10000000 - это положительное значение int 128. Буквальных представлений непосредственно для byte нет, только int, long, float, double, char, boolean,String и для null.Вам понадобится приведение, чтобы назначить его byte.

byte negative128 = (byte)0b10000000;

Это то же самое, что и любое другое представление:

byte a = (byte)128;
byte b = (byte)0x80;

Если преобразование из int константа времени компиляции (например, литерал) до byte не включает усечение (то есть от -128 до 127 включительно), тогда язык позволяет исключить приведение.

byte c = -128;
...