Variáveis e Tipos
Os tipos primitivos do Java incluem int, double, boolean, e char — toda variável tem um tipo declarado, e esse tipo fica fixo depois de declarado. Note que esses são primitivos, não objects: um boolean é impresso como a palavra true ou false, não como 0 ou 1.
public class Main {
public static void main(String[] args) {
int age = 30;
double price = 19.99;
boolean isStudent = false;
char grade = 'A';
System.out.println(age + " " + price + " " + isStudent + " " + grade);
}
}30 19.99 false A
Inferência de tipo com var
var deixa o compilador inferir o tipo de uma variável a partir do seu inicializador, introduzido no Java 10 — útil quando o tipo é óbvio ou verboso. Ele ainda produz um tipo fixo e totalmente estático em tempo de compilação; não é um tipo dinâmico como poderia ser em uma linguagem de script.
public class Main {
public static void main(String[] args) {
var count = 42; // inferred as int
var pi = 3.14159; // inferred as double
System.out.println(count + " " + pi);
}
}42 3.14159
Como é um erro real de incompatibilidade de tipos
O compilador do Java verifica se os tipos de cada atribuição realmente combinam — atribuir um String onde um int é esperado é um erro de compilação, não algo detectado depois em tempo de execução. Isso é genuinamente o que o javac relata — capturado de uma execução real, não escrito para parecer plausível:
public class Main {
public static void main(String[] args) {
int age = "thirty";
System.out.println(age);
}
}Main.java:3: error: incompatible types: String cannot be converted to int
int age = "thirty";
^
1 errorNada roda — nenhum resultado, só o erro. Detectar isso em tempo de compilação em vez de em tempo de execução é um dos principais benefícios da tipagem estática do Java.
A seguir: operators e controle de fluxo — if/else, for, while, e switch.
Practice exercise
Declare uma variável temperature de tipo double fixada em 72.5 e uma variável isSunny de tipo boolean fixada em true. Imprima-as juntas separadas por um espaço.