170 похожих чатов

Добрый день, подскажите пожалуйста, для чего в джаве существует тип

данных byte, кроме того, что используется для экономии памяти?

12 ответов

6 просмотров

что бы совсем простые примеры - для байтовой передачи. т.е. есть картинка - как ты её передашь? набором байтов- вот они байты, универсальные на всё гораздые)

Для экономии памяти и существует, это основное предназначение. Второе предназначение - для автоматического ограничения диапазона значений. Если ты точно знаешь, что у тебя данная величина никогда не выйдет за пределы -128..+127, то можно это статически зафиксировать в коде программы, используя тип byte. Это несколько спорный сценарий, потому что по факту диапазон довольно произвольный, да и работа с таким типом плохо организована в джаве. Но иногда имеет право на существование. В целом правило большого пальца - не использовать его, если у тебя нет хорошей причины его использовать.

Tagir Valeev
Для экономии памяти и существует, это основное пре...

А разве под byte по факту не будет под капотом выделено памяти соизмеримо с интом из-за всяких оптимизаций, сдвигов и подгонов под машинное слово? Про перегонку в инт в промежуточных операциях вообще молчу

Alex Verkhoglyad
А разве под byte по факту не будет под капотом выд...

Далеко не всегда. Если ты выделяешь массив байт (а это наиболее частый случай использования типа byte), то выравнивание будет общее на весь массив, а не на каждый элемент

Evg Resh
ByteArray, не?

тебя слово Байт в названии не смутил?

Alex JD
тебя слово Байт в названии не смутил?

Ну так это не одно и то же, насколько я знаю, ByteArray вообще оффхип, вроде. Может и херню несу.

Tagir Valeev
Для экономии памяти и существует, это основное пре...

Так всегда int по умолчанию) если уже не влезает - long🌚

Alex Verkhoglyad
А разве под byte по факту не будет под капотом выд...

Можно не только память экономить, если вспомнить самые основы, то в byte у нас вмещается 1 байт, а в int - 4, намного проще передать по сети 1 байт, вместо 4-х, самый явный по моему пример этого - ByteBuf из Netty. Это конечно мелочи, но всё таки, есть смысл выбирать тип данных, а не проставлять int где попало. А теперь можно задуматься над массивом byte, передать его по сети в 4 раза проще, чем массив из int, при этом, значения в массиве могут быть 1 в 1.

Почитай Шилдта

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта