La palabra clave estática (ya sea una variable o un bloque) pertenece a la clase. Entonces, cuando se llama a la clase, se ejecutan estas variables o bloques. Entonces, la mayor parte de la inicialización se realizará con la ayuda de una palabra clave estática. Como pertenece a la propia clase, la clase puede acceder directamente a ella, sin crear una instancia de la clase.
Tomemos un ejemplo, hay una clase de calzado en la que hay varias variables como color, talla, marca, etc ... Y aquí si la empresa fabricante de calzado tiene solo una marca, debemos inicializarla como una variable estática. Entonces, cuando se llama a la clase de zapatos y se fabrican diferentes tipos de zapatos (creando una instancia de la clase), en ese momento, el color y el tamaño ocuparán la memoria cada vez que se cree un nuevo zapato, pero aquí la marca es una propiedad común para todos los zapatos, de modo que ocupará la memoria por una vez sin importar cuántos zapatos se fabriquen.
Ejemplo:
class Shoe {
int size;
String colour;
static String brand = "Nike";
public Shoe(int size, String colour) {
super();
this.size = size;
this.colour = colour;
}
void displayShoe() {
System.out.printf("%-2d %-8s %s %n",size,colour, brand);
}
public static void main(String args[]) {
Shoe s1 = new Shoe(7, "Blue");
Shoe s2 = new Shoe(8, "White");
System.out.println("=================");
s1.displayShoe();
s2.displayShoe();
System.out.println("=================");
}
}