На самом деле я немного работал с байтами в последнее время, и они могут раздражать. Они повышают конвертацию в ints при малейшей провокации, и нет никакого указания на то, чтобы превратить число в байт - например, 8l даст вам длинное значение 8, но для байта вы должны сказать (байт) 8
Кроме того, они будут (в значительной степени) всегда храниться внутренне как ints, если вы не используете массив (и, возможно, даже тогда .. не уверены).
Я думаю, что они просто считают, что единственной причиной использования байта является i/o, где вам действительно нужны 8 бит, но внутренне они ожидают, что вы всегда будете использовать ints.
Кстати, байты могут выполнять хуже, так как он всегда должен быть в масках ...
По крайней мере, я помню, как читал, что много лет назад, могли бы изменить сейчас.
В качестве примера ответа на Ваш вопрос, если функция (е) занимает один байт, и вы имели два байта (b1 и b2), то:
f(b1 & b2)
не будет работать, потому что b1 & b2 будет преобразован в преобразование в int, и int не может быть преобразован автоматически (потеря точности). Поэтому вам нужно будет ввести код:
f((byte)(b1 & b2))
Который вызывает раздражение.
И не беспокойтесь, спрашивая, ПОЧЕМУ b1 & b2 up-convertts - Я в последнее время ругался за это немного!
Вам нужно только указать значения, превышающие 0x7F, поскольку байты подписаны. В этом нет ничего раздражающего. Это намного лучше, чем наличие пустого знака без знака. Используйте IDE, он будет проверять безопасность типа и делать актеры для вас. Операция маски - это одна инструкция, она не влияет на производительность. –