Bloco estático vs. construtor
Bloco Estático
Em uma classe Java, um bloco estático é um conjunto de instruções que é executado apenas uma vez quando uma classe é carregada na memória. Um bloco estático também é chamado de bloco de inicialização estático . Isso ocorre porque é uma opção para inicializar ou configurar a classe em tempo de execução. A palavra-chave ‘estático’ indica que abrange todas as instâncias da classe. É como um mini-conjunto global de instruções.
Vamos dar uma olhada em como declarar uma classe e um bloco estático.
public class SvC {
static {
// bloco estático
System.out.println ("Olá, sou um bloco estático!");
}
}
Construtor
Por outro lado, os construtores são executados CADA vez que uma nova instância de uma classe é criada. Você pode sobrecarregar um construtor, o que significa que várias versões do construtor podem ser criadas. Cada um deve ter um número diferente de parâmetros, mas, caso contrário, eles podem ter o mesmo nome. Vejamos alguns exemplos. Vamos adicionar o construtor após as instruções de bloco estático.
public class SvC {
static {
// bloco estático
System.out.println ("Olá, sou um bloco estático!");
}
public SvC () {
System.out.println ("Construtor 1 diz oi!");
}
public SvC (int c) {
System.out.println ("Construtor 2 diz oi!");
}
}
Finalmente, quando criamos uma instância da classe no programa principal, o construtor fornecido é chamado. No entanto, o bloco estático carrega apenas uma vez na memória. Vamos testar. O código a seguir cria instâncias da classe SvC.
public static void main (String [] args) {
int counter = 15;
SvC objeto1 = novo SvC ();
SvC objeto2 = novo SvC ();
SvC objeto3 = novo SvC ();
SvC objeto4 = novo SvC ();
SvC objeto 5 = novo SvC ();
}
Quando o código é executado, a seguinte saída é exibida.
![]() |
Como o bloco estático é sempre executado primeiro, não importa em que ordem ele é colocado na classe. Normalmente, você gostaria de ter o bloco estático listado antes dos construtores para facilitar a leitura, mas o Java tecnicamente não se importa. No entanto, o Java processará os códigos de bloco estático em ordem.
Usando blocos estáticos e construtores
Variáveis estáticas são variáveis específicas de uma classe e se estendem por todas as instâncias da classe. Portanto, um bloco estático é útil quando você precisa fazer alguns cálculos nessas variáveis quando a classe é carregada na memória. Além disso, você pode estabelecer registros ou trilhas de segurança para a classe. Como eles são carregados para todas as classes, eles podem ser configurados no bloco estático.
Uma palavra sobre construtores
Um construtor é um requisito para uma classe Java. É o método principal que cria a instância dessa classe. Mesmo que você não crie um construtor, o Java cria um padrão para você. Tecnicamente, não precisamos do primeiro construtor para criar a instância da classe SvC, mas é uma boa prática de codificação, especialmente se tivermos sobrecarregado o construtor.
Os construtores são executados TODAS as vezes que uma nova instância da classe é criada. E, claro, os blocos estáticos (se existirem) são executados primeiro. Os construtores serão executados conforme são executados no seu código. É quando você cria novas instâncias da classe.
Resumo da lição
Vamos fazer uma revisão de alguns minutos!
Um bloco estático , ou bloco de inicialização estático , é o código executado uma vez para cada vez que uma classe é carregada na memória. É útil para configurar variáveis estáticas ou log, que se aplicariam a todas as instâncias da classe. Um construtor é necessário para cada classe, uma vez que elas são executadas CADA vez que uma nova instância de uma classe é criada. É o método que cria a classe. Você pode criar construtores sobrecarregados , o que significa que várias versões do construtor podem ser criadas. Eles são construídos com o mesmo nome da classe, mas com parâmetros diferentes.