данных byte, кроме того, что используется для экономии памяти?
что бы совсем простые примеры - для байтовой передачи. т.е. есть картинка - как ты её передашь? набором байтов- вот они байты, универсальные на всё гораздые)
Для экономии памяти и существует, это основное предназначение. Второе предназначение - для автоматического ограничения диапазона значений. Если ты точно знаешь, что у тебя данная величина никогда не выйдет за пределы -128..+127, то можно это статически зафиксировать в коде программы, используя тип byte. Это несколько спорный сценарий, потому что по факту диапазон довольно произвольный, да и работа с таким типом плохо организована в джаве. Но иногда имеет право на существование. В целом правило большого пальца - не использовать его, если у тебя нет хорошей причины его использовать.
А разве под byte по факту не будет под капотом выделено памяти соизмеримо с интом из-за всяких оптимизаций, сдвигов и подгонов под машинное слово? Про перегонку в инт в промежуточных операциях вообще молчу
Далеко не всегда. Если ты выделяешь массив байт (а это наиболее частый случай использования типа byte), то выравнивание будет общее на весь массив, а не на каждый элемент
Ну, я скорее про единичное значение
тебя слово Байт в названии не смутил?
Ну так это не одно и то же, насколько я знаю, ByteArray вообще оффхип, вроде. Может и херню несу.
то ByteBuffer.allocateDirect оффхип
Так всегда int по умолчанию) если уже не влезает - long🌚
Можно не только память экономить, если вспомнить самые основы, то в byte у нас вмещается 1 байт, а в int - 4, намного проще передать по сети 1 байт, вместо 4-х, самый явный по моему пример этого - ByteBuf из Netty. Это конечно мелочи, но всё таки, есть смысл выбирать тип данных, а не проставлять int где попало. А теперь можно задуматься над массивом byte, передать его по сети в 4 раза проще, чем массив из int, при этом, значения в массиве могут быть 1 в 1.
Почитай Шилдта
Обсуждают сегодня