Вопрос

Итак, я изучаю Java, и у меня есть вопрос.Кажется, что типы int, boolean и string будет хорош практически для всего, что мне когда-либо понадобится с точки зрения переменных, за исключением, возможно, float может использоваться, когда в числе необходимы десятичные числа.

Мой вопрос в том, являются ли другие типы, такие как long, double, byte, char и т. д. когда-либо использовалось в обычном повседневном программировании?Для каких практических целей их можно использовать?Для чего они существуют?

Это было полезно?

Решение

За возможным исключением «коротких», которые, возможно, являются пустой тратой места — иногда буквально все они — лошади для курсов:

  • Используйте интервал когда вам не нужны дробные числа и нет причин использовать что-то еще;в большинстве конфигураций процессоров/ОС это размер числа, с которым машина может справиться наиболее эффективно;
  • Использовать двойной когда вам нужны дробные числа и у вас нет причин использовать что-то еще;
  • Использовать голец когда вы хотите представить символ (или, возможно, в редких случаях, когда вам нужна двухбайтовая беззнаковая арифметика);
  • Использовать байт если вам конкретно нужно манипулировать подписано байт (редко!), или когда вам нужно передвигаться по блокировать байтов;
  • Использовать логическое значение когда вам нужен простой флаг «да/нет»;
  • Использовать длинный для тех случаев, когда вам нужно целое число, но величина может превышать 2 миллиарда (размеры файлов, измерения времени в миллисекундах/наносекундах, в расширенных целях для сжатия нескольких фрагментов данных в одно число);
  • Использовать плавать для тех редких случаев, когда вы либо (а) храните огромное количество из них и экономия памяти целесообразна, или (б) выполняют огромное количество вычислений, и может позволить себе потерю точности.Для большинства приложений «float» обеспечивает очень низкую точность, но операции могут выполняться вдвое быстрее — однако стоит проверить это на своем процессоре, чтобы убедиться, что это действительно так![*]
  • Использовать короткий если вам действительно нужна 2-байтовая знаковая арифметика.Случаев не так уж и много...

[*] Например, в Hotspot на архитектурах Pentium fОперации loat и double обычно занимают одинаковое время, кроме деления.

Не слишком увязайте в использовании памяти этих типов, если только вы не Действительно понимать это.Например:

  • каждый размер объекта округляется до 16 байт в Hotspot, поэтому объект с однобайтовым полем будет занимать точно такое же пространство, как один объект с длинным или двойным полем;
  • при передаче параметров в метод, каждый тип занимает в стеке 4 или 8 байт:вы ничего не сохраните, изменив параметр метода, скажем, с целого на короткое!(Я видел, как люди это делают...)

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

Обратите внимание, что String не является примитивным типом, поэтому ему не место в этом списке.

Другие советы

java int - это 32 бита, а long - 64 бита, поэтому, когда вам нужно представить целые числа больше 2 ^ 31, long ваш друг. Типичный пример использования long см. В System.currentTimeMillis ()

Байт составляет 8 бит и является наименьшей адресуемой сущностью на большинстве современных аппаратных средств, поэтому он необходим при чтении двоичных данных из файла.

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

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

Char представляет один символ длиной 16 бит. Это такой же размер, как у короткого, но короткое подписывается (от -32768 до 32767), а символ без знака (от 0 до 65535). (Это означает, что номер ip-порта, вероятно, более правильно представляется в виде символа, чем короткого, но, похоже, это выходит за рамки, предусмотренные для символов ...)

Для действительно авторитетного источника этих подробностей см. спецификация языка Java .

Вы можете посмотреть здесь о примитивные типы в Java.

Основной интерес между этими типами - использование памяти. Например, int использует 32 бита, в то время как байт использует только 8 бит.

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

Полагаю, есть несколько целей для таких типов:

1) Они устанавливают ограничения на размер (и знак) переменных, которые могут храниться в них.

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

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

4) Вам понадобится long, если числа, которые нужно сохранить, больше 2 ^ 32 и двойные для очень больших чисел с плавающей запятой.

Примитивные типы данных необходимы, потому что они являются основой каждой сложной коллекции.

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

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

Мне нужен " маленький " для базы данных и потоковых операций.

Целые числа следует использовать для чисел в целом.
Doubles - основной тип данных, используемый для представления десятичных знаков.
Строки могут содержать практически любой тип данных, но проще использовать целые и вводить в заблуждение использование строки, за исключением текста.
Символы используются, когда вы хотите удержать только одну букву, хотя по существу они только для ясности.
Шорты, длинные и плавающие могут не понадобиться, но если, например, вы создаете массив размером 1 000 000, который должен содержать только числа меньше 1000, тогда вы захотите использовать шорты, просто для экономии места.

Это связано с данными, с которыми вы имеете дело. Нет смысла использовать тип данных, который резервирует большую часть памяти, когда вы имеете дело только с небольшим объемом данных. Например, многие типы данных резервируют память еще до их использования. Возьмем, к примеру, массивы, они зарезервируют сумму по умолчанию (скажем, 256 байт & Lt; - пример!), Даже если вы используете только 4 байта из этого.

См. эту ссылку для своего ответа

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top