Подтвердить что ты не робот

В Java кто-нибудь использует короткий или байт?

Помимо использования (byte []) в потоковой передаче, я действительно не вижу байт, а короткий - много. С другой стороны, я давно видел, где фактическое значение | 100 | и байт будет более уместным. Является ли это следствием относительной недорогой природы памяти сейчас или это просто минута, о которой разработчикам не нужно беспокоиться?

4b9b3361

Ответ 1

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

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

Ответ 2

Тип данных byte часто используется при работе с необработанными данными из файла или сетевого подключения, хотя в основном используется как byte[]. Типы short и short[] часто используются в связи с графическими интерфейсами и обработкой изображений (для местоположений пикселей и размеров изображений) и при обработке звука.

Основная причина использования byte или short - это ясность. Программный код не имеет аналогов, что нужно использовать только 8 или 16 бит, и когда вы случайно используете более крупный тип (без подходящего типа), вы получаете ошибку компиляции. (По общему признанию, это также можно рассматривать как неприятность при написании кода... но в очередной раз наличие typecasts указывает на то, что с читателем происходит усечение.)

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

Итак, я полагаю, что основная причина, по которой разработчики не используют byte или short столько, сколько вы (разработчик C?) может ожидать, это то, что она действительно не делает много (или часто какой-либо) разницы, Разработчики Java склонны не останавливаться на использовании памяти, как разработчики старой школы C:-).

Ответ 3

В 64-битном процессоре регистры все 64-разрядные, поэтому, если ваша локальная переменная назначается регистру и является логическим, байтовым, коротким, char, int, float, double или long it doesn ' t использовать память и не сохранять никаких ресурсов. Объекты выравниваются по 8 байт, поэтому они всегда занимают кратное 8-байтовое число в памяти. Это означает, что Boolean, Byte, Short, Character, Integer, Long, Float и Double, AtomicBoolean, AtomicInteger, AtomicLong, AtomicReference используют одинаковый объем памяти.

Как уже отмечалось, короткие типы используются для массивов и чтения/записи форматов данных. Даже тогда короткий не используется очень часто ИМХО.

Также стоит отметить, что стоимость GB составляет около 80 фунтов стерлингов на сервере, поэтому MB составляет около 8 пенсов, а KB составляет около 0,008 пенсов. Разница между байтом и длинной составляет около 0,00006 пенсов. Ваше время стоит больше, чем это. esp, если у вас когда-либо была ошибка, которая возникла из-за слишком малого типа данных.

Ответ 4

Я бы чаще всего использовал типы short и byte при работе с бинарными форматами и DataInput/DataOutput экземпляры. Если спецификация говорит, что следующее значение имеет 8-битное или 16-битное значение, и нет значения в продвижении их к int (возможно, это бит-флаги), это очевидный выбор.

Ответ 5

Арифметика на byte и short более неудобна, чем при int s. Например, если b1 и b2 являются двумя переменными byte, вы не можете написать byte b3 = b1 + b2, чтобы добавить их. Это связано с тем, что Java никогда не выполняет арифметику внутри всего на чем-то меньшем, чем int, поэтому выражение b1 + b2 имеет тип int, хотя только добавляет два значения byte. Вы должны написать вместо byte b3 = (byte) (b1 + b2).

Ответ 6

Я использовал short экстенсивно при создании эмулятора на основе 16-битной архитектуры. Я считал использование char, поэтому я мог бы иметь материал без знака, но в конце концов выиграл дух использования целочисленного типа.

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

Ответ 7

Я думаю, что в большинстве приложений short не имеет значения для домена, поэтому имеет смысл использовать Integer.

Ответ 8

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

short также используется как индексы массива в JavaCard (1.0 и 2.0, IIRC, но не 3.0, который также имеет стек HTTP и веб-службы).

Ответ 9

byte [] происходит все время; буферов, особенно для сетей, файлов, графики, сериализации и т.д.

Ответ 10

В большинстве случаев никогда не бывает хорошей технической причины для разработчика (Java, С#, BASIC и т.д.), чтобы решить для int, short или byte - когда достаточной емкости достаточно, конечно. Если значение будет меньше 2 миллиардов, тогда int будет.

Вы уверены, что у нас будут люди старше 255? Ну, ты никогда не знаешь!

Не достаточно ли 32 767 возможных стран? Не думайте слишком мало!

В вашем примере вы можете быть полностью счастливы с вашим байтом var, содержащим 100, если вы абсолютно уверены, что он НИКОГДА не переполнится. Почему ребята используют int больше всего? Потому что.... потому что.

Это одна из тех вещей, которые большинство из нас просто делает, потому что мы видели это чаще всего и никогда не спрашивали по-другому.

Конечно, я ничего не имею против "всех вещей int". Я просто предпочитаю использовать правильный тип для каждого вида стоимости, без стресса.