Negocio

Bloco estático vs. construtor em Java

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.

Saída do construtor de bloco estático Java

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.