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 var para declarar mensagem e numero.
  • Criar um Integer a partir de numero (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

  1. var mensagem = "Olá, Java!"; — o compilador infere String.
  2. var numero = 42; — infere int.
  3. Integer numeroObj = numero; — autoboxing converte int para Integer.
  4. numeroObj.getClass().getSimpleName() retorna "Integer".
  5. 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 var sem inicializar: var x; — erro de compilação.
  • Tentar usar var como 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