1. Os tipos de dados em Java são divididos em tipos de dados básicos e tipos de dados complexos.
int é o primeiro e inteiro é o último (ou seja, uma classe).
2. Durante a inicialização
Integer i = new Integer(1); // (trata o inteiro como uma classe)
Integer é uma classe, uma extensão de int e define muitos métodos de conversão.
Os semelhantes incluem: float Float, double Double, string String, etc.
Por exemplo: quando você precisa colocar coisas em ArrayList ou HashMap, tipos internos como int e double não podem ser colocados, porque os contêineres contêm objetos. Isso requer classes de cobertura externa desses tipos internos.
Cada tipo integrado em Java possui uma classe de cobertura correspondente.
A relação entre int e Integer em Java é relativamente sutil. A relação é a seguinte:
1. int é o tipo de dados básico;
2. Inteiro é a classe de encapsulamento de int;
3. Tanto int quanto Integer podem representar um determinado valor;
4. Int e Integer não podem ser usados alternadamente porque são dois tipos de dados diferentes;
Exemplo: