O que significa autoboxing ou boxing de tipos primitivos?
O que significa autoboxing ou boxing de tipos primitivos?
Oi Felipe, tudo bem?
Existem alguns momentos que precisamos representar um tipo primitivo como um objeto.
O método add() de uma lista, por exemplo recebe um Object. Exemplo:
Aluno a1 = new Aluno();
Aluno a2 = new Aluno();
List alunos = new ArrayList();
alunos.add(aluno1);
alunos.add(aluno2);Quando estamos lidando com objetos, é ok, mas como fazer para ter uma lista de int (tipo ptimitivo) por exemplo?
int num1 = 10;
int num2 = 42;
List numeros = new ArrayList();
numeros.add(num1); // num1 é um primitivo!
numeros.add(num2); // num2 tambemPor esse motivo, o Java possui uma classe chama Integer, que serve para representarmos um int como um objeto. 
Dizemos que essa classe é um wrapper, que envolve um primitivo int e faz com que eu consiga representá-lo como um objeto.
O boxing, é guardar esse primitivo "dentro" da sua classe:
Integer num1 = new Integer(10);
Integer num2 = new Integer(42);
List numeros = new ArrayList();
numeros.add(num1);
numeros.add(num2);O unboxing é quando precisamos obter o primitivo novamente:
int meuPrimitivo = num1.intValue();Como é meio chato ficar criando objetos do tipo Integer, ou pegando primitivos int a partir dos objetos, o compilador faz isso de forma automática. Então você pode simplesmente passar um primitivo onde é esperado um objeto (e vice-versa) e o java vai fazer essa conversão para você. Isso é o que se chama de autoboxing:
List numeros = new ArrayList();
numeros.add(10);
numeros.add(12);Existem classes wrapper pra cada um dos tipos primitivos existentes no java.
Você pode ver mais sobre isso aqui
Abraço!