int
Es un tipo primitivo. Las variables de tipo int
almacenan el valor binario real para el entero que desea representar. int.parseInt("1")
no tiene sentido porque noint
es una clase y por lo tanto no tiene ningún método.
Integer
es una clase, no diferente de ninguna otra en el lenguaje Java. Las variables de tipo Integer
almacenan referencias a Integer
objetos, al igual que con cualquier otro tipo de referencia (objeto). Integer.parseInt("1")
es una llamada al método estático parseInt
desde la clase Integer
(tenga en cuenta que este método en realidad devuelve un int
y no un Integer
).
Para ser más específicos, Integer
es una clase con un solo campo de tipo int
. Esta clase se usa cuando necesita int
que se lo trate como a cualquier otro objeto, como en tipos genéricos o situaciones en las que necesita nulabilidad.
Tenga en cuenta que cada tipo primitivo en Java tiene una clase de contenedor equivalente :
byte
tiene Byte
short
tiene Short
int
tiene Integer
long
tiene Long
boolean
tiene Boolean
char
tiene Character
float
tiene Float
double
tiene Double
Las clases de envoltura heredan de la clase Object y las primitivas no. Por lo tanto, se puede utilizar en colecciones con referencia a objetos o con genéricos.
Desde java 5 tenemos autoboxing, y la conversión entre primitiva y clase de envoltura se realiza automáticamente. Sin embargo, tenga cuidado, ya que esto puede introducir errores sutiles y problemas de rendimiento; ser explícito sobre las conversiones nunca está de más.