Ответ 1
Имейте в виду, что Java также используется на мобильных устройствах, где память намного ограничена.
Я программировал на Java с 2004 года, в основном это корпоративные и веб-приложения. Но я никогда не использовал короткие или байт, кроме игрушечной программы, чтобы знать, как работают эти типы. Даже в циклах в 100 раз мы обычно идем с int. И я не помню, имел ли я когда-либо какой-либо код, который использовал байты или короткие, кроме некоторых общедоступных API и фреймворков.
Да. Я знаю, вы можете использовать короткий или байт для экономии памяти в больших массивах, в ситуациях, когда на самом деле важно экономить память. Кто-нибудь хочет практиковать это? Или это просто что-то в книгах.
[Отредактировано]
Использование байтовых массивов для сетевого программирования и сокетной связи - довольно распространенное использование. Спасибо, Даррен, чтобы указать на это. Теперь как насчет короткого? Райан, дал отличный пример. Спасибо, Райан.
Имейте в виду, что Java также используется на мобильных устройствах, где память намного ограничена.
Я использую байт много. Обычно в виде массивов байтов или ByteBuffer для сетевой связи двоичных данных.
Я редко использую float или double, и я не думаю, что когда-либо использовал короткий текст.
Я использовал "байты" много, в коде C/С++, реализующем такие функции, как сжатие изображений (т.е. выполнение алгоритма сжатия по каждому байту черно-белого растрового изображения) и обработка двоичных сетевых сообщений (путем интерпретации байтов в сообщении).
Однако я практически никогда не использовал "float" или "double".
Основное использование, которое я видел для них, - это обработка данных с неизвестной структурой или даже никакой реальной структуры. Сетевое программирование является примером первого (кто бы ни посылал данные, знает, что это значит, но вы не можете), например, сжатие изображений с 256-цветными (или полутоновыми) изображениями является примером последних.
Сверху моей головы grep приходит на ум, как другое использование, как и всякое копирование файла. (Конечно, ОС будет делать это, но иногда это недостаточно.)
Сам язык Java делает неоправданно трудным использование типов byte
или short
. Всякий раз, когда вы выполняете какую-либо операцию со значением byte
или short
, Java сначала продвигает ее к int
, а результат операции возвращается как int
. Кроме того, они подписаны, и нет никаких равнозначных эквивалентов, что является еще одним частым источником разочарования.
Итак, вы в конечном итоге используете byte
много, потому что он по-прежнему является основным строительным блоком всех вещей кибер, но тип short
тоже не может существовать.
До сегодняшнего дня я не заметил, как редко я их использую.
Я использую байт для связанных с сетью материалов, но в большинстве случаев они были для моих собственных инструментов/обучения. В рабочих проектах эти вещи обрабатываются с помощью фреймворков (например, JSP)
Short? почти никогда.
Long? Ни.
Мои предпочтительные целые литералы всегда являются int, для циклов, счетчиков и т.д.
Когда данные поступают из другого места (например, базы данных), я использую правильный тип, но для литералов я всегда использую int.
Я использую байты в разных местах, в основном, используя обработку данных низкого уровня. К сожалению, разработчики языка Java сделали байты подписанными. Я не могу придумать, в какой ситуации отрицательные байтовые значения были полезны. Наличие диапазона 0-255 было бы намного более полезным.
Я не думаю, что когда-либо использовал шорты в любом правильном коде. Я также никогда не использую float (если мне нужны значения с плавающей запятой, я всегда использую double).
Я согласен с Tom. В идеале, на языках высокого уровня мы не должны заботиться об основных представлениях машин. Мы должны иметь возможность определять собственные диапазоны или использовать произвольные числа точности.
когда мы программируем для электронных устройств, таких как мобильный телефон, мы используем байты и короткие. В этом случае мы должны заботиться об управлении памятью.
Возможно, более интересно посмотреть на семантику int. Являются ли эти произвольные ограничения и тихая усечка тем, что вы хотите? Для кода на уровне приложений действительно нужны произвольные размерные целые числа, просто так, что Java не имеет возможности выразить их разумно.
Я использовал байты при сохранении состояния при проверке модели. В этом приложении экономия пространства стоит дополнительной работы. В противном случае я никогда их не использую.
Я обнаружил, что при использовании низкоуровневой обработки изображений я использовал байтовые переменные. Процедуры рисования .Net GDI + были очень медленными, поэтому я вручную снял свои собственные.
В большинстве случаев я придерживаюсь знаковых целых чисел, если я не вынужден использовать что-то большее, учитывая проблемы. Любое физическое моделирование, которое я обычно делаю, требует поплавков или удвоений, даже если мне не нужна точность.
Apache POI использовал short
несколько раз. Вероятно, из-за ограничения числа строк/столбцов Excel.
Несколько месяцев назад они заменили на int
на замену
createCell (short columnIndex)
с
В datagrids в памяти это может быть полезно. Концепция datagrid как Gemfire - иметь огромную распределенную карту. Когда у вас недостаточно памяти, вы можете переполняться на диск с помощью стратегии LRU, но ключи всех записей вашей карты остаются в памяти (по крайней мере, с Gemfire).
Таким образом, очень важно сделать ваши ключи с небольшим размером, особенно если вы обрабатываете очень большие наборы данных. Для значения записи, когда вы можете также лучше использовать соответствующий тип с небольшим размером памяти...
Я использовал шорты и байты в Java-приложениях, обмениваясь данными с пользовательскими usb или последовательными микроконтроллерами для получения 10-битных значений, завернутых в 2 байта в качестве шорт.
byte
и short
широко используются в разработке Java-карт. Взгляните на мой ответ на Существуют ли какие-либо реальные приложения для примитивного типа байтов Java?.