AnyCompiler

static e final

Um field ou method static pertence à própria class, não a nenhum instance individual — toda chamada a Counter.increment() modifica o único Counter.count compartilhado, por isso três chamadas o deixam em 3 em vez de três instances separados cada um em 1.

public class Main {
    static class Counter {
        static int count = 0;

        static void increment() {
            count++;
        }
    }

    public static void main(String[] args) {
        Counter.increment();
        Counter.increment();
        Counter.increment();
        System.out.println(Counter.count);
    }
}
Output
3

final

final marca algo como não modificável depois de definido. Em uma variável, significa que a referência nunca pode ser reatribuída, que é a forma convencional de declarar uma constant em Java — PI_APPROX aqui pode ser lido de qualquer lugar mas nunca mudado.

public class Main {
    static final double PI_APPROX = 3.14159;

    public static void main(String[] args) {
        double radius = 2;
        System.out.println(PI_APPROX * radius * radius);
    }
}
Output
12.56636

A seguir: um olhar final sobre Optional, e o que este curso cobriu.

Practice exercise

Defina uma class Counter com um static int count começando em 0 e um static method increment() que adicione 1 a ele. Chame increment() três vezes, depois imprima Counter.count.