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

Long vs Integer, long vs int, что использовать и когда?

Иногда я вижу API с помощью long или long или int или Integer, и я не могу понять, как принято решение для этого?

Когда я должен выбрать что?

4b9b3361

Ответ 1

Long является формой Object Long, а Integer является объектной формой int.

Long использует 64 бит. int использует 32 бита и поэтому может содержать только цифры до ± 2 миллиардов (-2 31 до +2 31 -1).

Вы должны использовать Long и int, за исключением случаев, когда вам нужно использовать методы, унаследованные от Object, например hashcode. Java.util.collections обычно используют вставные версии (Object -wrapped), потому что они должны работать для любого Object, а примитивный тип, например int или Long, не является Object.

Другое отличие состоит в том, что Long и int являются пропущенными значениями, тогда как Long и Integer являются значениями, передаваемыми по ссылке, как и все непримитивные типы Java. Поэтому, если бы можно было изменить a Long или Integer (это не так, они неизменяемы без использования кода JNI), есть и другая причина использовать один над другим.

Последнее различие заключается в том, что a Long или Integer может быть null.

Ответ 2

Есть несколько вещей, которые вы не можете сделать с примитивным типом:

  • Имеет значение null
  • синхронизировать с ними
  • Используйте их как параметр типа для общего класса и связанные с ним:
  • Передайте их API, который работает с Object s

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

Ответ 3

  • По умолчанию используйте int, удерживая цифры.
  • Если диапазон int слишком мал, используйте long
  • Если диапазон long слишком мал, используйте BigInteger
  • Если вам нужно обрабатывать ваши номера как объекты (например, при размещении их в Collection, обработке null,...) вместо Integer/long вместо

Ответ 4

An int - это 32-разрядное целое число; a long - это 64-разрядное целое число. Какой из них использовать, зависит от того, насколько велики числа, с которыми вы рассчитываете работать.

int и long являются примитивными типами, а Integer и long являются объектами. Примитивные типы более эффективны, но иногда вам нужно использовать объекты; например, классы коллекции Java могут работать только с объектами, поэтому, если вам нужен список целых чисел, вы должны сделать его List<Integer>, например (вы не можете использовать int в List напрямую).

Ответ 5

Целое число - это 32-разрядное целое число со знаком

  • Обозначается как Int
  • Размер = 32 bits (4byte)
  • Может содержать целые числа диапазона -2,147,483,648 to 2,147,483,647
  • значение по умолчанию 0


Long - это 64-битное целое число со знаком

  • Обозначается как Long
  • Размер = 64 bits (8byte)
  • Может содержать целые числа диапазона -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
  • значение по умолчанию 0L


Если вы используете переменную в 32-битном диапазоне, используйте Int, иначе используйте long. Обычно long используется для научных вычислений, и тому подобные вещи требуют большой точности. (например, значение пи).

Примером выбора одного над другим является случай YouTube. Сначала они определили счетчик просмотров видео как int который был переполнен при получении более 2 147 483 647 просмотров на популярном видео. Поскольку счетчик Int не может хранить значения, превышающие его диапазон, YouTube изменил счетчик на 64-битную переменную и теперь может насчитывать до 9 223 372 036 854 775 807 просмотров. Поймите ваши данные и выберите тип, который подходит как 64-битная переменная займет вдвое больше памяти, чем 32-битная переменная.

Ответ 6

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

Из Java 5 вы можете использовать функции in-boxing и out-boxing, чтобы использовать int и Integer полностью одинаково. Это означает, что вы можете:

int myInt = new Integer(11);
Integer myInt2 = myInt;

Входящий и исходящий бокс позволяют вам переключаться между int и Integer без какого-либо дополнительного преобразования (то же самое для Long, Double, Short)

Вы можете использовать int все время, но Integer содержит некоторые вспомогательные методы, которые могут помочь вам выполнить некоторые сложные операции с целыми числами (например, Integer.parseInt(String))

Ответ 7

а) Класс объекта "Long" по сравнению с примитивным типом "long". (По крайней мере на Java)

б) Существуют разные (даже неясные) размеры памяти примитивных типов:

Java - все ясно: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

  • байт, символ.. 1B.. 8b
  • короткая инт.. 2б.. 16б
  • int........ 4B.. 32b
  • длинный инт.. 8б.. 64б

C.. просто беспорядок: https://en.wikipedia.org/wiki/C_data_types

  • коротко.. 16б
  • int...... 16b... wtf?!?!
  • долго.... 32б
  • долго долго.. 64б.. беспорядок! : -/