O static é um modificador que torna o atributo ou método pertencente a classe. Ou seja, o valor/referência ficam estáticos independente da instância da classe.
Perceba que o prórprio método main do Java é estático. Isso significa que mesmo que haja diferentes instâncias da classe main o método estático é exatamente o mesmo.
public class Main {
public static void main(String[] args) {
}
}
O exemplo abaixo gera erro, pois o método main está tentando manipular o atributo de classe chamado number.
public class Main {
private int number;
public static void main(String[] args) {
int something = number * 2;
}
}
public class Estatico {
public static doublePI= 3.14;
public void alterar(){
PI= Math.random();
}
public void printPI(){
System.out.println(PI);
}
public static void main(String[] args) {
Estatico est01 = new Estatico();
Estatico est02 = new Estatico();
est01.printPI();
est02.printPI();
est01.alterar();
est01.printPI();
est02.printPI();
}
}