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
- Usando var para Variáveis Locais
- Quando var Ajuda na Legibilidade
- var em Laços for
- Limitações de var