AnyCompiler

static y final

Un field o method static pertenece a la propia class, no a ningún instance individual — cada llamada a Counter.increment() modifica el único Counter.count compartido, por eso tres llamadas lo dejan en 3 en vez de tres instances separados sentados cada uno en 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 no modificable después de fijarse. En una variable, significa que la referencia nunca puede reasignarse, que es la forma convencional de declarar una constant en Java — PI_APPROX aquí se puede leer desde cualquier lugar pero nunca cambiarse.

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

Siguiente: un vistazo final a Optional, y qué cubrió este curso.

Practice exercise

Define una class Counter con un static int count que empiece en 0 y un static method increment() que le sume 1. Llama a increment() tres veces, luego imprime Counter.count.