O var é uma palavra-chave introduzida no Java 10 que permite inferência de tipo de dado, ou seja, o compilador decide automaticamente qual é o tipo da variável baseado no valor atribuído a ela.
A palavra-chave var simplifica a declaração de variáveis em Java, permitindo que o compilador determine o tipo da variável com base no valor atribuído, tornando o código mais conciso.
// Usando String explicitamente String nome = "Maria"; // Usando var - o compilador infere que é String var nome = "Maria"; // Compilador infere que é int var idade = 25; // Compilador infere que é double var preco = 19.99; // Compilador infere que é boolean var ativo = true;
Ao declarar e atribuir um valor a uma determinada variável usando var, o Java infere (deduz) o tipo de variável que foi atribuída.
var a = 3.4, o Java entende que a variável a é do tipo doublevar b = 5, o Java entende que a variável b é do tipo intvar c = "Texto", o Java entende que a variável c é do tipo StringImportante: Depois de inferido o tipo de variável a uma determinada variável, você não pode mudar o tipo de valor associado àquela variável. Ou seja, o Java amarra o tipo de variável a uma determinada variável e não pode ser mudado depois, mesmo usando var.
Vejamos um exemplo completo de como usar var em Java:
public class ExemploVar {
public static void main(String[] args) {
// Usando inferência de tipo com var
var nome = "João Silva";
var idade = 30;
var altura = 1.75;
var ativo = true;
// Imprimindo os valores
System.out.println("Nome: " + nome);
System.out.println("Idade: " + idade);
System.out.println("Altura: " + altura);
System.out.println("Ativo: " + ativo);
// Imprimindo os tipos das variáveis
System.out.println("\nTipos das variáveis:");
System.out.println("Tipo de nome: " + nome.getClass().getName());
System.out.println("Tipo de idade: " + ((Object)idade).getClass().getName());
System.out.println("Tipo de altura: " + ((Object)altura).getClass().getName());
System.out.println("Tipo de ativo: " + ((Object)ativo).getClass().getName());
// Modificando valores (mas mantendo o mesmo tipo)
nome = "Maria Oliveira";
idade = 25;
altura = 1.65;
ativo = false;
System.out.println("\nValores atualizados:");
System.out.println("Nome: " + nome);
System.out.println("Idade: " + idade);
System.out.println("Altura: " + altura);
System.out.println("Ativo: " + ativo);
// Isso geraria um erro de compilação:
// nome = 123; // Erro: incompatível com o tipo String
// idade = 3.14; // Erro: incompatível com o tipo int
}
}
Nome: João Silva
Idade: 30
Altura: 1.75
Ativo: true
Tipos das variáveis:
Tipo de nome: java.lang.String
Tipo de idade: java.lang.Integer
Tipo de altura: java.lang.Double
Tipo de ativo: java.lang.Boolean
Valores atualizados:
Nome: Maria Oliveira
Idade: 25
Altura: 1.65
Ativo: false
Teste seus conhecimentos sobre a inferência de variáveis em Java:
Reforce o conteúdo desta aula com mais dois exercícios práticos: