A veces veo que las API usan long
or Long
o int
or Integer
, y no puedo entender cómo se toma la decisión para eso.
¿Cuándo debo elegir qué?
Long
es la Object
forma de long
, y Integer
es la forma de objeto deint
.
El long
utiliza 64 bits . Los int
usos de 32 bits, y así sólo pueden contener números de hasta ± 2 mil millones (-2 31 a 2 31 -1).
Debería usar long
y int
, excepto donde necesite usar métodos heredados Object
, como hashcode
. Java.util.collections
los métodos usualmente usan las Object
versiones en caja ( envueltas), porque necesitan funcionar para cualquiera Object
, y un tipo primitivo, como int
o long
, no es unObject
.
Otra diferencia es que long
y int
son valores de paso por valor , mientras que Long
y Integer
son valores de paso por referencia , como todos los tipos Java no primitivos. Entonces, si fuera posible modificar un Long
oInteger
(no lo es, son inmutables sin usar el código JNI), habría otra razón para usar uno sobre el otro.
Una diferencia final es que a Long
o Integer
podría ser null
.
Hay un par de cosas que no puedes hacer con un tipo primitivo:
null
valorObject
sA menos que necesite alguno de esos, debe preferir los tipos primitivos, ya que requieren menos memoria.
fuente
int
, cuando tenga números.int
es demasiado pequeño, use unlong
long
es demasiado pequeño, useBigInteger
Collection
, manejonull
, ...) useInteger
/ en suLong
lugarfuente
Un
int
es un entero de 32 bits; along
es un número entero de 64 bits. Cuál usar depende de qué tan grandes sean los números con los que espera trabajar.int
ylong
son tipos primitivos, mientras queInteger
yLong
son objetos. Los tipos primitivos son más eficientes, pero a veces necesitas usar objetos; por ejemplo, clases de colección de Java sólo se puede trabajar con objetos, por lo que si necesita una lista de números enteros que tienen para que sea unaList<Integer>
, por ejemplo (no se puede utilizarint
en unList
directamente).fuente
El entero es un tipo entero de 32 bits con signo
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long es un tipo entero de 64 bits con signo
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Si su uso de una variable cae en el rango de 32 bits, use
Int
, de lo contrario uselong
. Por lo general, se usa mucho tiempo para cálculos científicos y cosas así necesitan mucha precisión. (p. ej. valor de pi).fuente
Cuando se trata de usar un número muy largo que puede superar los 32 bits para representar, puede usar mucho tiempo para asegurarse de que no tendrá un comportamiento extraño.
Desde Java 5, puede usar las funciones de entrada y salida para hacer que el uso de int e Integer sea completamente el mismo. Significa que puedes hacer:
El dentro y fuera del boxeo le permiten cambiar entre int Entero y sin ninguna conversión adicional (lo mismo para
Long
,Double
,Short
también)Puede usar
int
todo el tiempo, peroInteger
contiene algunos métodos auxiliares que pueden ayudarlo a realizar algunas operaciones complejas con enteros (comoInteger.parseInt(String)
)fuente
a) clase de objeto "Long" versus tipo primitivo "long". (Al menos en Java)
b) Hay diferentes tamaños de memoria (incluso poco claros) de los tipos primitivos:
Java: todo claro: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C .. simplemente lío: https://en.wikipedia.org/wiki/C_data_types
fuente