Palavra-chave static em Java

A palavra-chave static em Java é usada para criar membros de uma classe que pertencem à classe em vez de a instâncias individuais dessa classe. Isso significa que um membro static pode ser acessado sem a necessidade de criar uma instância da classe.

Características do static:

  1. Membros estáticos:
    • Variáveis estáticas: Compartilhadas entre todas as instâncias da classe. Elas são comuns a todas as instâncias e podem ser acessadas diretamente através da classe.
    • Métodos estáticos: Podem ser chamados sem a necessidade de criar uma instância da classe. Eles não podem acessar diretamente variáveis e métodos não estáticos da classe.
    • Blocos estáticos: Usados para inicializar variáveis estáticas e são executados apenas uma vez, quando a classe é carregada.
  2. Acesso:
    • Membros estáticos podem ser acessados diretamente usando o nome da classe.
    • Instâncias não são necessárias para acessar membros estáticos.

Sintaxe:

Variáveis estáticas:

public class Exemplo {
    public static int variavelEstatica = 10;
}

Métodos estáticos:

public class Exemplo {
    public static void metodoEstatico() {
        System.out.println("Método estático chamado.");
    }
}

Blocos estáticos:

public class Exemplo {
    static {
        // Código de inicialização estática
        System.out.println("Bloco estático executado.");
    }
}

Exemplos:

Variáveis estáticas:

public class Contador {
    public static int count = 0;

    public void incrementar() {
        count++;
    }

    public static void mostrarContagem() {
        System.out.println("Contagem: " + count);
    }

    public static void main(String[] args) {
        Contador c1 = new Contador();
        Contador c2 = new Contador();

        c1.incrementar();
        c2.incrementar();

        // Acessando variável estática diretamente pela classe
        Contador.mostrarContagem(); // Saída: Contagem: 2
    }
}

Métodos estáticos:

public class Calculadora {
    public static int somar(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int resultado = Calculadora.somar(5, 3);
        System.out.println("Resultado da soma: " + resultado); // Saída: Resultado da soma: 8
    }
}

Bloco estático:

public class Inicializador {
    static {
        System.out.println("Bloco estático inicializado.");
    }

    public static void main(String[] args) {
        // O bloco estático é executado quando a classe é carregada
        System.out.println("Main executado.");
    }
}

Considerações:

  • Acesso a membros não estáticos: Métodos estáticos não podem acessar diretamente variáveis ou métodos não estáticos. Eles podem apenas acessar outros membros estáticos da classe.
  • Uso: O static é útil para criar membros comuns a todas as instâncias de uma classe, como constantes e métodos utilitários.

Restrições:

  • Instância: Você não pode usar this ou super em métodos estáticos, pois this e super referem-se a uma instância da classe.

A palavra-chave static é uma ferramenta poderosa para definir comportamentos e dados que são compartilhados entre todas as instâncias de uma classe e para criar métodos utilitários que podem ser usados independentemente de uma instância específica da classe.