Tipos Wrapper em Java
Crie um ArrayList<Integer> chamado nums, chame nums.add(9); depois nums.add(4);, e imprima nums.get(0). Compile Crate.java e execute java Crate. A tela deve mostrar uma linha: 9. Nos colchetes angulares fica Integer, não int. Guardar números inteiros numa lista por meio de um tipo Wrapper — para que a coleção possa conter objetos — é o que esta página ensina.
Por que a lista precisa de Integer
Na página de iterating a lista guardava palavras String. Um ArrayList armazena objetos. O tipo primitivo int não é um objeto. O tipo Wrapper Integer é a forma objeto de um número inteiro. Dentro dos colchetes angulares você escreve Integer. Quando você chama add(9), o Java pode empacotar o primitivo 9 num Integer por você nesta página. Esse boxing silencioso basta para o arquivo de ensino.
Abra Crate.java. Mantenha o nome da classe pública Crate para coincidir com o nome do arquivo. Apague restos de for (String t : tags), adds de oak e pine, demos de Lane e qualquer resto de HashSet ou map. Apague também qualquer Scanner ou nextLine. O programa não deve esperar digitação.
Perto do topo, acima de public class Crate, escreva:
import java.util.ArrayList;
Dentro de main, crie a lista:
ArrayList<Integer> nums = new ArrayList<Integer>();
Não escreva ArrayList<int> — o javac recusa essa forma. Mantenha Integer dos dois lados da linha de criação nesta página. Depois adicione dois números inteiros sem aspas:
nums.add(9);
nums.add(4);
Depois escreva:
System.out.println(nums.get(0));
O slot zero guarda 9. Salve antes de compilar.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
System.out.println(nums.get(0));
}
}
Da pasta que contém Crate.java, execute javac Crate.java. Quando parênteses, chaves, colchetes angulares e ponto e vírgula coincidem, o javac não escreve linha própria. Depois execute java Crate — não java Crate.java, e não java Integer. Tire a terminação .java do comando de execução.
O programa deve imprimir uma linha e parar: 9. Não deve pedir que você digite. Se o terminal esperar entrada do teclado, ainda há uma chamada nextLine de um exercício antigo num arquivo. Apague essa chamada e mantenha a criação de ArrayList<Integer>, as duas linhas add e System.out.println(nums.get(0));.
Percorra a execução uma vez. O Java começa em Crate.main. A lista cresce com dois inteiros empacotados. A chamada get(0) devolve o primeiro Integer. A linha de impressão escreve 9. A tela mostra 9. Nada mais deve imprimir. Se você vir oak ou pine, ainda corre uma demo de iterating de Lane — vá para java Crate. Se você vir 4, imprimiu get(1) por engano; mantenha get(0) para o arquivo de ensino. Se você vir [9, 4], imprimiu o objeto lista inteiro em vez do slot zero — mantenha println(nums.get(0)) para o caminho do quiz.
Se o javac rejeitar ArrayList<int>, mude os colchetes para Integer. Esse erro é o ponto central da regra de tipo desta lição; corrija os colchetes e compile de novo. Se escrever nums.add("9"); com aspas, você está adicionando um String, e o javac recusa para um ArrayList<Integer>. Mantenha dígitos sem aspas nesta página. Se faltar o import, o javac não encontra ArrayList — coloque import java.util.ArrayList; acima da classe. A ortografia Integer com I maiúsculo importa; integer nos colchetes não combina com o tipo Wrapper que o Java espera aqui.
Unbox para um int simples
Uma segunda demo lê o primeiro valor numa variável primitiva int e depois imprime essa variável. O Java desempacota o Integer por você nesta atribuição.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
int n = nums.get(0);
System.out.println(n);
}
}
Compile e execute da mesma forma. A tela ainda mostra 9. A linha int n = nums.get(0); tira o valor Wrapper como um int simples. Você não precisa chamar intValue() neste caminho de iniciante. Mantenha o primeiro arquivo de ensino na forma direta println(nums.get(0)). Use o arquivo unbox para ver que uma variável primitiva pode guardar o que a lista armazenou como Integer. Mantenha o nome n exatamente como mostrado para a linha de impressão ficar curta. Não misture um for-each sobre tags String neste segundo arquivo — fique com a lista de números e a única atribuição int.
Lado a lado
Uma tabela curta mantém clara a regra de tipo.
📊 int vs Integer for lists
| Piece | On this page |
|---|---|
| list type | ArrayList<Integer> |
| illegal | ArrayList<int> — not allowed |
| add | nums.add(9); — boxes to Integer |
| read | nums.get(0) prints 9; may unbox to int n |
A tabela é só um lembrete. As peças digitadas que você mantém são o import, ArrayList<Integer>, os dois adds e get(0). |
Comparado com listas String e com primitivos sozinhos
Na página de iterating, ArrayList<String> guardava palavras. Isso ainda funciona. Esta página troca o tipo de elemento para Integer para que inteiros possam sentar numa lista. Um for-each sobrado de Lane que imprime oak e pine é outra lição. Para esta página mantenha Crate e imprima 9 a partir de get(0).
Um int x = 9; sozinho ainda funciona sem nenhuma lista. Wrappers importam quando a API de coleções pede um tipo objeto nos colchetes angulares. Outros wrappers seguem a mesma ideia depois — Double ao lado de double, Boolean ao lado de boolean — mas esta página mantém Integer e int para a tela ficar um número claro. Você não precisa memorizar todo nome de Wrapper hoje; aprenda o padrão uma vez com Integer ao lado de int e a forma ilegal ArrayList<int>.
Quando arquivos antigos Lane.java ainda ficam perto, deixe-os ou apague-os só se confundirem qual classe você executa. Execute java Crate depois de compilar a lista Wrapper desta lição. O caminho Collections termina aqui com esse 9 claro na tela antes de o curso virar para erros e arquivos.
O que fica para exceptions
Esta página fecha a necessidade de Wrapper do módulo Collections para inteiros numa lista. O próximo módulo abre erros com exceptions. Fique aqui nesta página com ArrayList<Integer> e get(0). Não invente try ou catch como exigência nesta página.
Antes das exceptions
Você pode importar java.util.ArrayList, criar ArrayList<Integer> nums, adicionar 9 e 4, e imprimir nums.get(0) para ver 9. Também pode fazer unbox para int n. Compile Crate.java e execute java Crate. O tipo Wrapper deixou a lista guardar inteiros. A página seguinte é exceptions, onde um programa sinaliza e trata problemas.
Mantenha Integer nos colchetes angulares. Mantenha adds de números sem aspas. Mantenha get(0) para a tela de ensino 9. Esses três hábitos são o ponto de verificação antes de seguir. Quando a tela mostra 9 da lista Integer após uma compilação limpa de Crate.java, os wrappers fizeram o trabalho desta lição e você está pronto para o próximo tema.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo