DEV Community

Blocos Estáticos

Definição:

  • Um bloco estático é um trecho de código que é executado quando a classe é carregada pela primeira vez pela JVM.
  • É utilizado para inicializar variáveis estáticas ou realizar tarefas que precisam ser concluídas antes que a classe possa ser utilizada.

Propósito:

  • Pode ser usado para executar inicializações importantes, como estabelecer conexões ou calcular valores iniciais.
  • Útil para preparar a classe antes que qualquer instância seja criada ou antes que métodos estáticos sejam chamados.

Execução:

  • O bloco estático é executado apenas uma vez, logo que a classe é carregada, antes de qualquer outro código relacionado à classe.
  • Ele é executado mesmo que nenhum objeto da classe seja criado.

Exemplo de Código com Bloco Estático:

StaticBlock.java

// Usa um bloco estático
class StaticBlock {
    static double rootOf2;
    static double rootOf3;

    // Bloco estático para inicialização
    static {
        System.out.println("Inside static block.");
        rootOf2 = Math.sqrt(2.0);
        rootOf3 = Math.sqrt(3.0);
    }

    StaticBlock(String msg) {
        System.out.println(msg);
    }
}

class SDemo3 {
    public static void main(String args[]) {
        StaticBlock ob = new StaticBlock("Inside Constructor");
        System.out.println("Square root of 2 is " + StaticBlock.rootOf2);
        System.out.println("Square root of 3 is " + StaticBlock.rootOf3);
    }
}

Enter fullscreen mode Exit fullscreen mode
  • A mensagem "Inside static block." mostra que o bloco estático foi executado antes da criação do objeto StaticBlock.
  • Os valores de rootOf2 e rootOf3 são calculados no bloco estático e estão disponíveis antes da execução de qualquer método ou construção de objeto.

Vantagem dos Blocos Estáticos:
Garantem que certas inicializações sejam feitas de maneira segura e no momento adequado, antes que a classe seja utilizada.

Uso Comum:

  • Iniciar variáveis estáticas complexas ou executar configuração inicial de recursos que a classe precisa.

Top comments (0)