fbpx

Diferencia entre INTEGER y INT en JAVA

Tanto int como Integer de Java se utilizan para almacenar datos de tipo entero. La principal diferencia entre ambos es que el tipo de int es primitivo, mientras que Integer es de tipo de clase. Esta diferencia se vuelve significativa cuando el concepto de programación orientada a objetos aparece en la imagen durante el desarrollo, ya que int sigue el principio de tipo de datos primitivo mientras que Integer se comporta como una clase contenedora. El tipo primitivo int necesita 4 bytes en Java pero el objeto Integer ocupa 16 bytes de memoria. Por lo tanto, int es comparativamente más rápido que un objeto Integer.

Vídeo explicativo

Tipos de datos primitivos

El lenguaje de programación Java tiene tipos estáticos, lo que significa que todas las variables deben declararse primero antes de que puedan usarse. Esto implica indicar el tipo y el nombre de la variable, como ya has visto.

Al hacerlo, le dice a su programa que existe un campo llamado “engranaje”, contiene datos numéricos y tiene un valor inicial de “1”. El tipo de datos de una variable determina los valores que puede contener, además de las operaciones que se pueden realizar en ella. Además de int, el lenguaje de programación Java admite otros siete tipos de datos primitivos. Un tipo primitivo está predefinido por el idioma y se nombra mediante una palabra clave reservada. Los valores primitivos no comparten estado con otros valores primitivos. Los ocho tipos de datos primitivos compatibles con el lenguaje de programación Java son:

  • byte: el tipo de datos de byte es un entero de complemento a dos con signo de 8 bits. Tiene un valor mínimo de -128 y un valor máximo de 127 (incluido). El tipo de datos byte puede ser útil para ahorrar memoria en arreglos grandes, donde el ahorro de memoria es realmente importante. También se pueden usar en lugar de int donde sus límites ayudan a aclarar su código; el hecho de que el rango de una variable sea limitado puede servir como una forma de documentación.
  • short: el tipo de datos short es un entero de complemento a dos con signo de 16 bits. Tiene un valor mínimo de -32.768 y un valor máximo de 32.767 (incluido). Al igual que con el byte, se aplican las mismas pautas: puede usar un short para ahorrar memoria en arreglos grandes, en situaciones donde el ahorro de memoria realmente importa.
  • int: de forma predeterminada, el tipo de datos int es un entero de complemento a dos con signo de 32 bits, que tiene un valor mínimo de -231 y un valor máximo de 231-1. En Java SE 8 y versiones posteriores, puede usar el tipo de datos int para representar un entero de 32 bits sin signo, que tiene un valor mínimo de 0 y un valor máximo de 232-1. Utilice la clase Integer para utilizar el tipo de datos int como un entero sin signo.
  • long: el tipo de datos long es un entero de complemento a dos de 64 bits. Tiene un valor mínimo de -263 y un valor máximo de 263-1. En Java SE 8 y versiones posteriores, puede usar el tipo de datos long para representar una longitud de 64 bits sin firmar, que tiene un valor mínimo de 0 y un valor máximo de 264-1. Utilice este tipo de datos cuando necesite un rango de valores más amplio que los proporcionados por int.
  • float: el tipo de datos float es un punto flotante IEEE 754 de 32 bits de precisión simple. Su rango de valores está más allá del alcance de esta discusión, pero se especifica en la sección Tipos, formatos y valores de coma flotante de la Especificación del lenguaje Java. Al igual que con las recomendaciones para byte y short, use un flotante (en lugar de doble) si necesita ahorrar memoria en grandes arreglos de números de coma flotante. Este tipo de datos nunca debe usarse para valores precisos, como la moneda. Para eso, deberá usar la clase java.math.BigDecimal en su lugar. Numbers and Strings cubre BigDecimal y otras clases útiles proporcionadas por la plataforma Java.
  • doble: el tipo de datos doble es un punto flotante IEEE 754 de 64 bits de doble precisión. Su rango de valores está más allá del alcance de esta discusión, pero se especifica en la sección Tipos, formatos y valores de coma flotante de la Especificación del lenguaje Java. Para valores decimales, este tipo de datos suele ser la opción predeterminada. Como se mencionó anteriormente, este tipo de datos nunca debe usarse para valores precisos, como la moneda.
  • booleano: el tipo de datos booleano tiene solo dos valores posibles: true y false. Utilice este tipo de datos para indicadores simples que rastrean condiciones verdaderas o falsas. Este tipo de datos representa un bit de información, pero su “tamaño” no es algo que esté definido con precisión.
  • char: el tipo de datos char es un único carácter Unicode de 16 bits. Tiene un valor mínimo de ‘\u0000’ (o 0) y un valor máximo de ‘\uffff’ (o 65.535 inclusive).

Valores predeterminados

No siempre es necesario asignar un valor cuando se declara un campo. El compilador establecerá los campos que se declaran pero no se inicializan en un valor predeterminado razonable. En términos generales, este valor predeterminado será cero o nulo, según el tipo de datos. Sin embargo, confiar en tales valores predeterminados generalmente se considera un mal estilo de programación.

El siguiente gráfico resume los valores predeterminados para los tipos de datos anteriores.

Tipo de datoValores predeterminados
byte0
short0
int0
long0L
float0.0f
double0.0d
char‘\u0000’
booleanfalse

Clase contenedora

Una clase contenedora en Java se usa para convertir un tipo de datos primitivo en un objeto y un objeto en un tipo primitivo. Incluso los tipos de datos primitivos se utilizan para almacenar tipos de datos primarios, las estructuras de datos como las listas de matrices y los vectores almacenan objetos. Por lo tanto, se requiere utilizar clases contenedoras para la conversión. Las clases contenedoras correspondientes para los tipos primitivos char, byte, short e int son Character, Byte, Short e Integer. Las clases contenedoras correspondientes para long, float, double y boolean son Long, Float, Double y Boolean.

Dato primitivoClase contenedora
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

Como ahora está trabajando con objetos, puede usar ciertos métodos para obtener información sobre el objeto específico.

Por ejemplo, los siguientes métodos se utilizan para obtener el valor asociado con el objeto contenedor correspondiente: intValue(), byteValue(), shortValue(), longValue(), floatValue(), doubleValue(), charValue(), booleanValue() .

Mayores diferencias

intInteger
Un int es un tipo de datos que almacena un entero de complemento a dos con signo de 32 bits.Integer es una clase contenedora que envuelve un tipo primitivo int en un objeto.
int ayuda a almacenar valores enteros en la memoria.Integer ayuda a convertir int en objeto y convertir un objeto en int según el requisito.
int proporciona menos flexibilidad en comparación con Integer, ya que solo permite el valor binario de un número entero.Integer, por otro lado, es más flexible para almacenar y manipular datos int. Dado que las clases Wrapper heredan la clase Object, se pueden usar en colecciones con referencia a Object o genéricos.
Como ya se mencionó, int es un tipo de datos primitivo y requiere 32 bits (4 bytes) para almacenarse.Por otro lado, Integer es un objeto que toma 128 bits (16 bytes) para almacenar su valor int.
En Java, no se puede asignar un valor de cadena (que solo contenga un número entero) a una variable int directamente o incluso mediante conversión.En el caso de Integer, podemos asignar una cadena a un objeto de tipo Integer usando el constructor Integer(String) o incluso usar parseInt(String) para convertir un literal String en un valor int.
En el caso de int, no podemos convertir su valor entero a otra base.Sin embargo, en Integer podemos convertir directamente su valor entero a otras bases como formato binario, octal o hexadecimal usando toBinaryString(), toOctalString() o toHexString() respectivamente.
int no permite que ninguna de las funciones incorporadas cambie su valor o sintaxis.Sin embargo, en Integer podemos invertir el número o rotarlo hacia la izquierda o hacia la derecha usando reverse(), rotarLeft() y rotarDerecha() respectivamente.