Различные операторы не объявлены для byte
- оба операнда повышаются до int
, и в результате получается int
. Например, дополнение:
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 + byte2; // Compilation error
Обратите внимание, что составные назначения работают:
byte1 += byte2;
Был недавний вопрос SO по этому . Я согласен, что это особенно утомительно для побитовых операций, хотя результат всегда должен быть одинакового размера, и это логически полностью допустимая операция.
В качестве обходного пути вы можете просто привести результат обратно к байту:
byte byte3 = (byte) (byte1 & byte2);