inté um tipo primitivo. Variáveis do tipo intarmazenam o valor binário real do número inteiro que você deseja representar. int.parseInt("1")não faz sentido porque nãoint é uma classe e, portanto, não possui métodos.
Integeré uma classe, não diferente de qualquer outra na linguagem Java. Variáveis do tipo Integerarmazenam referências a Integerobjetos, assim como qualquer outro tipo de referência (objeto). Integer.parseInt("1")é uma chamada para o método estático parseIntda classe Integer(observe que esse método realmente retorna um inte não um Integer).
Para ser mais específico, Integeré uma classe com um único campo do tipo int. Essa classe é usada onde você precisa intser tratado como qualquer outro objeto, como em tipos genéricos ou situações em que você precisa de nulidade.
Observe que todo tipo primitivo em Java possui uma classe de wrapper equivalente :
byte tem Byte
short tem Short
int tem Integer
long tem Long
boolean tem Boolean
char tem Character
float tem Float
double tem Double
As classes de wrapper herdam da classe Object e as primitivas não. Portanto, ele pode ser usado em coleções com referência a objeto ou com genéricos.
Desde o java 5, temos autoboxing, e a conversão entre as classes primitiva e wrapper é feita automaticamente. Cuidado, no entanto, pois isso pode introduzir erros sutis e problemas de desempenho; ser explícito sobre conversões nunca é demais.