Кто-нибудь использует короткие и байтовые примитивные типы в реальных приложениях? - PullRequest
11 голосов
/ 31 декабря 2008

Я программирую на Java с 2004 года, в основном это корпоративные и веб-приложения. Но я никогда не использовал short или byte , кроме игрушечной программы, просто чтобы узнать, как работают эти типы. Даже в цикле for 100 раз мы обычно используем int . И я не помню, сталкивался ли я когда-либо с кодом, который использовал байт или short , кроме некоторых открытых API и фреймворков.

Да, я знаю, вы можете использовать short или byte для сохранения памяти в больших массивах, в ситуациях, когда экономия памяти действительно имеет значение. Кто-нибудь хочет практиковать это? Или это просто что-то в книгах.

[Изменено]

Использование байтов массивов для сетевого программирования и обмена сокетами - довольно распространенное использование. Спасибо, Даррен, за это. А как насчет коротких ? Райан, дал отличный пример. Спасибо, Райан.

Ответы [ 15 ]

11 голосов
/ 31 декабря 2008

Я часто использую байт. Обычно в виде байтовых массивов или ByteBuffer для сетевой передачи двоичных данных.

Я редко использую float или double, и я не думаю, что когда-либо использовал short.

8 голосов
/ 31 декабря 2008

Имейте в виду, что Java также используется на мобильных устройствах, где память намного более ограничена.

4 голосов
/ 31 декабря 2008

Сам язык Java делает неоправданно сложным использование типов byte или short. Всякий раз, когда вы выполняете какую-либо операцию со значением byte или short, Java сначала переводит его в значение int, и результат операции возвращается как int. Кроме того, они подписаны, и нет неподписанных эквивалентов, что является еще одним частым источником разочарования.

Таким образом, вы в конечном итоге используете byte много, потому что это все еще основной строительный блок всех вещей кибер, но тип short может также не существовать.

4 голосов
/ 31 декабря 2008

Основное использование, которое я видел для них, - это обработка данных с неизвестной структурой или даже без реальной структуры. Сетевое программирование является примером первого (кто бы ни отправлял данные, знает, что это значит, но вы не можете), например, сжатие изображения 256-цветными (или полутоновыми) изображениями является примером второго.

Вдобавок к моей голове grep приходит на ум в качестве другого использования, как и любой вид файловой копии. (Конечно, ОС сделает это, но иногда этого недостаточно.)

4 голосов
/ 31 декабря 2008

Я много использовал 'byte' в коде C / C ++, реализуя такие функции, как сжатие изображений (т.е. запуск алгоритма сжатия для каждого байта черно-белого растрового изображения) и обработку двоичной сети сообщения (интерпретируя байтов в сообщении).

Однако я практически никогда не использовал 'float' или 'double'.

3 голосов
/ 18 января 2009

когда мы программируем для электронных устройств, таких как мобильные телефоны, мы используем байты и короткие. В этом случае мы должны позаботиться об управлении памятью.

3 голосов
/ 31 декабря 2008

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

Я не думаю, что когда-либо использовал шорты в каком-либо правильном коде. Я также никогда не использую числа с плавающей запятой (если мне нужны значения с плавающей запятой, я всегда использую double).

Я согласен с Томом . В идеале, в языках высокого уровня нас не должны интересовать базовые машинные представления. Мы должны иметь возможность определять собственные диапазоны или использовать числа произвольной точности.

3 голосов
/ 31 декабря 2008

До сегодняшнего дня я не замечал, как редко я их использую.

Я использовал байт для работы с сетью, но в большинстве случаев они использовались для моих собственных инструментов / обучения. В рабочих проектах эти вещи обрабатываются фреймворками (например, JSP)

Short? почти никогда.

Long? Ни.

Мои предпочтительные целочисленные литералы всегда int, для циклов, счетчиков и т. Д.

Когда данные поступают из другого места (например, из базы данных), я использую правильный тип, но для литералов я всегда использую int.

2 голосов
/ 31 декабря 2008

Возможно, более интересно взглянуть на семантику int. Эти произвольные ограничения и тихое усечение - то, что вы хотите? Для кода уровня приложения действительно нужны целые числа произвольного размера, просто у Java нет способа выразить их разумно.

1 голос
/ 13 апреля 2015

Я использовал шорты и байты в приложениях Java, взаимодействующих с пользовательскими микроконтроллерами usb или последовательным интерфейсом для получения 10-битных значений, упакованных в 2 байта, в качестве шортов.

...