Иногда я вижу использование API long
или Long
или int
или Integer
, и я не могу понять, как решение для этого принято?
Когда я должен выбрать что?
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. Так что если бы можно было изменить Long
илиInteger
(это не так, они неизменны без использования кода JNI), была бы другая причина использовать один поверх другого.
Последнее различие заключается в том, что Long
или Integer
может быть null
.
Есть пара вещей, которые вы не можете сделать с примитивным типом:
null
значениеObject
сЕсли вам не нужен ни один из них, вы должны предпочитать примитивные типы, так как они требуют меньше памяти.
источник
int
, когда держите числа.int
слишком мал, используйтеlong
long
слишком мал, используйтеBigInteger
Collection
, обработкуnull
, ...), используйтеInteger
/Long
вместоисточник
An
int
является 32-битным целым числом; аlong
является 64-битным целым числом. Какой из них использовать, зависит от того, с какими числами вы ожидаете работать.int
иlong
являются примитивными типами, аInteger
иLong
являются объектами. Примитивные типы более эффективны, но иногда вам нужно использовать объекты; Например, классы коллекции Java могут работать только с объектами, поэтому, если вам нужен список целых чисел, вы должныList<Integer>
, например, сделать его (вы не можете использоватьint
егоList
напрямую).источник
целое число - это 32-разрядное целое число со знаком
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long - это 64-битное целое число со знаком
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Если ваше использование переменной попадает в 32-битный диапазон, используйте
Int
, иначе используйтеlong
. Обычно long используется для научных вычислений, и тому подобные вещи требуют большой точности. (например, значение пи).источник
Когда дело доходит до использования очень длинного числа, которое может превышать 32 бита для представления, вы можете использовать long, чтобы убедиться, что у вас не будет странного поведения.
В Java 5 вы можете использовать функции in-boxing и out-boxing, чтобы полностью использовать int и Integer. Это означает, что вы можете сделать:
И из бокса позволяют переключаться между междунар и Integer без дополнительной конвертации ( то же самое для
Long
,Double
,Short
тоже)Вы можете использовать
int
все время, ноInteger
содержит некоторые вспомогательные методы, которые могут помочь вам выполнить некоторые сложные операции с целыми числами (такими какInteger.parseInt(String)
)источник
а) Класс объекта "Long" против примитивного типа "long". (По крайней мере на Java)
б) Существуют разные (даже неясные) размеры памяти примитивных типов:
Java - все ясно: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C .. просто беспорядок: https://en.wikipedia.org/wiki/C_data_types
источник