Médio Java
Usando var e wrappers
Enunciado
Crie um programa que use var para declarar uma variável mensagem com o texto "Olá, Java!" e uma variável numero com o valor 42. Em seguida, crie um Integer a partir de numero usando autoboxing e imprima a mensagem, o número e o wrapper. Mostre também a classe do wrapper usando getClass().getSimpleName().
Requisitos
- Usar
varpara declararmensagemenumero. - Criar um
Integera partir denumero(autoboxing). - Imprimir a mensagem, o valor primitivo, o wrapper e o nome da classe do wrapper.
Código inicial
public class ExercicioMedio {
public static void main(String[] args) {
// use var para declarar mensagem e numero
// crie um Integer a partir de numero
// imprima os valores
}
}
Saída esperada
Mensagem: Olá, Java!
Número: 42
Wrapper: 42
Classe do wrapper: Integer
Ver dica
var só funciona para variáveis locais com inicialização. Para obter o nome da classe, use numeroObj.getClass().getSimpleName().
Mostrar solução
public class ExercicioMedio {
public static void main(String[] args) {
var mensagem = "Olá, Java!"; // String
var numero = 42; // int
Integer numeroObj = numero; // autoboxing
System.out.println("Mensagem: " + mensagem);
System.out.println("Número: " + numero);
System.out.println("Wrapper: " + numeroObj);
System.out.println("Classe do wrapper: " + numeroObj.getClass().getSimpleName());
}
}
Passo a passo
var mensagem = "Olá, Java!";— o compilador infereString.var numero = 42;— infereint.Integer numeroObj = numero;— autoboxing converteintparaInteger.numeroObj.getClass().getSimpleName()retorna"Integer".- Impressão dos valores com
System.out.println.
Por que funciona
var é apenas açúcar sintático: o tipo é determinado em tempo de compilação. O autoboxing permite atribuir um primitivo a um wrapper sem chamada explícita. O método getClass() retorna a classe em tempo de execução.
Erros comuns
- Usar
varsem inicializar:var x;— erro de compilação. - Tentar usar
varcomo parâmetro de método ou campo de classe — não é permitido. - Comparar wrappers com
==em vez de.equals()— pode falhar para valores fora do cache (-128 a 127).
Outra forma de resolver
Criar o wrapper explicitamente: Integer numeroObj = Integer.valueOf(numero); — mesmo efeito, mas sem autoboxing.
Saída esperada
Mensagem: Olá, Java!
Número: 42
Wrapper: 42
Classe do wrapper: Integer