Apply the static keyword to methods and fields

Em Java, a palavra-chave static é usada para criar membros (métodos e campos) de uma classe que pertencem à classe em vez de instâncias individuais da classe. Aqui estão exemplos de como aplicar a palavra-chave static a métodos e campos:

Método Estático:

public class ExemploMetodoEstatico {
    public static void main(String[] args) {
        // Chamada de método estático diretamente pela classe
        int resultado = MinhaClasse.somar(5, 3);
        System.out.println("Resultado da soma: " + resultado);

        // Também pode ser chamado através de uma instância da classe
        MinhaClasse instancia = new MinhaClasse();
        int resultadoInstancia = instancia.subtrair(8, 3);
        System.out.println("Resultado da subtração: " + resultadoInstancia);
    }
}

class MinhaClasse {
    // Método estático para somar dois números
    static int somar(int a, int b) {
        return a + b;
    }

    // Método não estático (método de instância) para subtrair dois números
    int subtrair(int a, int b) {
        return a - b;
    }
}

No exemplo acima, somar é um método estático, o que significa que ele pertence à classe MinhaClasse e pode ser chamado diretamente pela classe ou através de uma instância da classe.

Campo Estático:

public class ExemploCampoEstatico {
    public static void main(String[] args) {
        // Acesso ao campo estático diretamente pela classe
        System.out.println("Contagem de instâncias: " + MinhaClasse.contagemInstancias);

        // Criação de instâncias da classe
        MinhaClasse instancia1 = new MinhaClasse();
        MinhaClasse instancia2 = new MinhaClasse();

        // Acesso ao campo estático através de uma instância (não é a prática recomendada)
        System.out.println("Contagem de instâncias através de instância: " + instancia1.contagemInstancias);
    }
}

class MinhaClasse {
    // Campo estático para manter a contagem de instâncias
    static int contagemInstancias = 0;

    // Construtor incrementa a contagem de instâncias
    MinhaClasse() {
        contagemInstancias++;
    }
}

No exemplo acima, contagemInstancias é um campo estático que mantém a contagem total de instâncias da classe MinhaClasse. A palavra-chave static faz com que esse campo pertença à classe, e não a instâncias individuais.

O uso de membros estáticos é útil quando você quer que algo seja compartilhado entre todas as instâncias da classe ou quando você deseja acessar membros da classe sem criar uma instância dela.