AnyCompiler

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);
    }
}
Output
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);
    }
}
Output
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);
    }
}
Output
Main.java:3: error: incompatible types: String cannot be converted to int
        int age = "thirty";
                  ^
1 error

Nada 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.