2015-06-19 1 views
1

Я немного смущен, когда использовать какие примитивы. Если я определяю номер, как узнать, что использовать byte, short, int, или long? Я знаю, что они разные байты, но означает ли это, что я могу использовать только один из них для определенного числа?Что примитивно использовать в Java

Так просто, мой вопрос в том, когда я использую каждый из четырех примитивов, перечисленных выше?

+4

Прочтите https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – reto

+1

Проверьте [здесь] (http://stackoverflow.com/questions/1539793/in-java-does- any-use-short-or-byte) для случаев, когда полезно использовать 'byte' и' short'. В противном случае большинство разработчиков просто по умолчанию используют 'int', пока им не придется обрабатывать очень большие числа, а затем переключитесь на 'long'. – CubeJockey

+0

Так что, в принципе, 'int' может обрабатывать все числа, если они не слишком длинны? –

ответ

5

Если я скажу, что определяю число, откуда я знаю, что использовать байты, короткие, int или long?

В зависимости от вашего прецедента. Нет огромного штрафа за использование int, а не short, если только у вас нет миллиардов номеров. Просто рассмотрите диапазон, который может использовать переменная. В большинстве случаев разумно использовать int, диапазон которых составляет от 2,147,483,648 до 2,147,483,647, а long обрабатывает номера в диапазоне +/- 9,22337204 * 10 . Если вы не уверены, long особо не пострадает.

Единственными причинами, по которым вы можете использовать byte, является то, что вы храните данные байта, такие как части файла, или делаете что-то вроде сетевой связи или сериализации, где важно количество байтов. Помните, что байты Java также подписаны (от -128 до 127). То же самое для краткости - может быть полезно сохранить 2 ГБ памяти для массива с миллиардными элементами, но не особенно полезно для многих других, чем, опять же, сериализация с определенным выравниванием байтов.

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

Нет, вы можете использовать любые, которые достаточно велики для обработки этого числа. Конечно, десятичные значения нуждаются в double или float. Двойной вариант обычно идеален из-за его высокой точности и нескольких недостатков. Однако некоторые библиотеки (например, трехмерный рисунок) могут использовать float. . Помните, что вы можете привести числовые типы (например, (byte) someInt или (float) functionReturningADouble();

+0

Используя что-нибудь меньшее, чем int, сделайте арифметику много более раздражает, чем имеет какое-либо право быть. – Voo

4

Байт может быть числом от -128 до 127

Короткий может быть числом от -32768 до 32767.

INT может быть от -2^32 до 2^32 - 1

A long is -2^63 to 2^63 - 1

Обычно, если пространство не является проблемой, int отлично.

3

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

  • Используйте byte когда ваш номер находится в диапазоне [-128..127]
  • Используйте short, когда ваш номер находится в диапазоне [-32768..32767]
  • Используйте int, когда ваш номер находится в диапазоне [-2 ..2 -1]
  • Используйте long, когда ваш номер находится в диапазоне [-2 ..2 -1]

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

Если вы хотите неограниченный диапазон, используйте BigInteger. Эта гибкость достигается за счет: операции на BigInteger могут быть на порядок более дорогостоящими, чем идентичные операции с примитивами.

3

Знаете ли вы, какие значения потенциально могут иметь переменные?

Если оно будет между -128 и 127, используйте byte.

Если это будет между -32,768 и 32,767, используйте short.

Если это будет между -2^32 и 2^32 - 1, используйте int.

Если это будет между -2^63 и 2^63 - 1, используйте long.

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

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

Источник: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Смотрите также: the year 2038 problem

2

Общее руководство должно определенно быть: Если у вас нет особых оснований, чтобы выбрать определенный примитив, выбрать Int.

Это имеет по крайней мере три преимущества:

  1. Каждый вид арифметической или логической операции будет возвращать Int. Следовательно, если вы используете что-то меньшее, вам придется много бросить, чтобы фактически вернуть значения обратно.
  2. Это принятый стандарт для «некоторого числа». Если вы выберете что-нибудь еще, другие разработчики будут задаваться вопросом о причинах.
  3. Это будет наиболее эффективным, хотя, вероятно, разница в производительности от использования чего-либо еще будет незначительной.

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

+0

О, мой, кто-то забил это ... – Marco13

0

@dasblinkenlight

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

Следовательно, использование int, short, long, byte играет жизненно важную роль в оптимизации памяти. Когда interger содержит 1-значное значение, вы объявляете целое число с int или short, но вы все равно можете выбрать long, float и double технически, но чтобы стать хорошим программистом, вы можете попробовать следовать стандартам.

Байт - его 8 бит. Таким образом, он может удерживать значение от -128 до 127.

short: Его 32 бит. поэтому -32 768 и максимальное значение 32 767

Long-Its 64 бит. -2 (мощность) 63 и максимальное значение 2 (мощность) 63-1 float и double - для больших десятичных значений.

Boolean для Да или Нет decesions- может содержать значение 1 или 0

Чары для персонажей.

Надеюсь, этот ответ поможет вам.

Смежные вопросы