0Pricing
Java Academy · Aula

Usando var para Variáveis Locais

Deixe o compilador inferir o tipo

Usando var para Variáveis Locais é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

Inferência de tipos locais

Desde Java 10, você pode declarar variáveis locais com var e deixar que o compilador infira o tipo a partir do inicializador. Isso é chamado de inferência de tipos locais. A variável continua sendo fortemente tipada.

Seu primeiro var

Substitua um tipo explícito por var ao atribuir um valor. O compilador identifica o literal e infere o tipo correto.

public class Main {
    public static void main(String[] args) {
        var message = "Hello";
        var count = 42;
        System.out.println(message + " " + count);
    }
}

var não é tipagem dinâmica

var não torna o Java dinamicamente tipado. Depois de inferido, o tipo é fixo. Atribuir posteriormente um valor de outro tipo causa um erro de compilação.

public class Main {
    public static void main(String[] args) {
        var n = 10;
        n = 20;
        System.out.println(n);
    }
}

Inferindo tipos de objetos

var também funciona com objetos. O tipo inferido é o tipo retornado pela expressão inicializadora.

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        var list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        System.out.println(list);
    }
}

Menos repetição

Agora não é mais necessário escrever tipos genéricos longos duas vezes. var remove o tipo redundante do lado esquerdo.

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        var scores = new HashMap<String, Integer>();
        scores.put("Alice", 90);
        System.out.println(scores);
    }
}

Inferindo a partir de retornos de métodos

Quando um método retorna um valor, var obtém automaticamente o tipo de retorno declarado.

public class Main {
    static String greet() {
        return "Hi there";
    }
    public static void main(String[] args) {
        var g = greet();
        System.out.println(g.toUpperCase());
    }
}

var com tipos primitivos

Um literal inteiro infere int, enquanto um literal decimal infere double. Preste atenção ao tipo primitivo obtido.

public class Main {
    public static void main(String[] args) {
        var i = 5;
        var d = 5.0;
        var b = true;
        System.out.println(i + " " + d + " " + b);
    }
}

Ainda verificado em tempo de compilação

Como o tipo é conhecido em tempo de compilação, o compilador continua detectando erros de tipo. Chamar um método de String em um int inferido faria a compilação falhar.

public class Main {
    public static void main(String[] args) {
        var name = "Coddy";
        System.out.println(name.length());
    }
}

É preciso inicializar imediatamente

Uma declaração de var exige um inicializador na mesma linha. O compilador precisa de um valor para inferir o tipo.

public class Main {
    public static void main(String[] args) {
        var total = 0;
        for (int i = 1; i <= 5; i++) {
            total += i;
        }
        System.out.println(total);
    }
}

Funciona com vetores

Você pode inferir um tipo de vetor, desde que o inicializador deixe claro o tipo dos elementos.

public class Main {
    public static void main(String[] args) {
        var numbers = new int[]{1, 2, 3, 4};
        var sum = 0;
        for (var n : numbers) {
            sum += n;
        }
        System.out.println(sum);
    }
}

Um exemplo prático

Combinar var em um programa pequeno mantém o código limpo sem deixar de ser totalmente tipado.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var fruits = List.of("apple", "banana", "cherry");
        for (var fruit : fruits) {
            System.out.println(fruit.toUpperCase());
        }
    }
}

Verificação rápida

Qual opção descreve melhor como var funciona em Java?

Recapitulação

Você aprendeu a usar var para variáveis locais:

  • O compilador infere o tipo a partir do inicializador
  • A variável continua fortemente e estaticamente tipada
  • Um inicializador é obrigatório na mesma linha
  • Isso reduz a repetição com tipos genéricos longos
  • Funciona com tipos primitivos, objetos e vetores

Perguntas Frequentes

A aula “Usando var para Variáveis Locais” é grátis?

Sim — o texto completo de “Usando var para Variáveis Locais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “Usando var para Variáveis Locais”?

Deixe o compilador inferir o tipo Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Usando var para Variáveis Locais”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Usando var para Variáveis Locais
  2. Quando var Ajuda na Legibilidade
  3. var em Laços for
  4. Limitações de var
← Voltar para Java Academy