A veces veo que las API usan longor Longo intor Integer, y no puedo entender cómo se toma la decisión para eso.
¿Cuándo debo elegir qué?
Longes la Objectforma de long, y Integeres la forma de objeto deint .
El longutiliza 64 bits . Los intusos 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 longy int, excepto donde necesite usar métodos heredados Object, como hashcode. Java.util.collectionslos métodos usualmente usan las Objectversiones en caja ( envueltas), porque necesitan funcionar para cualquiera Object, y un tipo primitivo, como into long, no es unObject .
Otra diferencia es que longy intson valores de paso por valor , mientras que Longy Integerson valores de paso por referencia , como todos los tipos Java no primitivos. Entonces, si fuera posible modificar un LongoInteger (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 Longo Integerpodría ser null.
Hay un par de cosas que no puedes hacer con un tipo primitivo:
nullvalorObjectsA menos que necesite alguno de esos, debe preferir los tipos primitivos, ya que requieren menos memoria.
fuente
int, cuando tenga números.intes demasiado pequeño, use unlonglonges demasiado pequeño, useBigIntegerCollection, manejonull, ...) useInteger/ en suLonglugarfuente
Un
intes un entero de 32 bits; alonges un número entero de 64 bits. Cuál usar depende de qué tan grandes sean los números con los que espera trabajar.intylongson tipos primitivos, mientras queIntegeryLongson 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 utilizarinten unListdirectamente).fuente
El entero es un tipo entero de 32 bits con signo
Int32 bits (4byte)-2,147,483,648 to 2,147,483,647Long es un tipo entero de 64 bits con signo
Long64 bits (8byte)-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807Si 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,Shorttambién)Puede usar
inttodo el tiempo, peroIntegercontiene 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