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);
}
}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);
}
}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.