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