Fique por dentro – Concurso de TI! Ordem de inicialização de informações ao criar um objeto

Baixe o material de estudo



Baixar apostila para concurso

Fala, meus consagrados! Beleza?

A inicialização de classes e objetos em Java segue um processo bem definido que garante a configuração correta dos membros de uma classe antes que seja utilizada ou antes que uma instância seja criada. 

A inicialização de informações ao instanciar uma classe acontece na seguinte ordem:

  • Variáveis estáticas e blocos de inicialização estáticos;
  • Variáveis de instância e blocos de inicialização de instância; e
  • Dados dos construtores.

Vamos explorar este processo detalhadamente.

Figura 1: Ordem de inicialização de informações ao instanciar uma classe.

Variáveis estáticas e blocos de inicialização estáticos

As variáveis estáticas, também conhecidas como variáveis de classe, e os blocos de inicialização estáticos são os primeiros na linha de inicialização quando uma classe é carregada pela primeira vez no JRE (Java Runtime Environment).

  • Ordem:
    • As variáveis estáticas e os blocos de inicialização estáticos são processados na ordem em que aparecem no código;
  • Carregamento único:
    • Isso é feito uma única vez, independentemente de quantas vezes a classe é instanciada;
    • Se uma variável estática é alterada, a nova alteração é refletida em todas as futuras instâncias da classe, pois ela é compartilhada entre todas as instâncias.

Por exemplo:

public class Main {
     static int x = valorInicial();
     static {
          System.out.println("Bloco estático executado.");
           x += 5;
     }
     private static int valorInicial() {
          System.out.println("Variável estática inicializada.");
          return 10;
    }
}

No exemplo acima, “Variável estática inicializada.” será impresso seguido por “Bloco estático executado.” A variável x será inicializada com o valor 15 após a execução do bloco estático.

Variáveis de instância e blocos de inicialização de instância

Depois que a classe é carregada e suas variáveis estáticas e blocos estáticos são inicializados, as variáveis de instância e os blocos de inicialização de instância são processados quando uma nova instância da classe é criada.

  • Ordem:
    • Assim como as variáveis estáticas, as variáveis de instância e os blocos de inicialização de instância são processados na ordem em que são declarados na classe;
  • Inicialização a cada instância:
    • Este processo ocorre cada vez que uma nova instância da classe é criada, assegurando que cada objeto tenha suas próprias cópias das variáveis de instância que foram inicializadas adequadamente.

Por exemplo:

public class Main {
      int y = valorInicial();
      {
           System.out.println("Bloco de inicialização de instância executado.");
           y += 3;
      }
     private int valorInicial() {
          System.out.println("Variável de instância inicializada.");
          return 2;
      }
}

No código acima, quando uma instância de Main é criada, “Variável de instância inicializada.” será impresso seguido por “Bloco de inicialização de instância executado.”, e a y será inicializada com o valor 5.

Dados dos construtores

Finalmente, após as variáveis estáticas e de instância serem inicializadas, o construtor da classe é executado para finalizar a inicialização do objeto.

  • Inicialização a cada instância:
    • O construtor é chamado para cada nova instância da classe, após a inicialização das variáveis de instância;
  • Personalização da inicialização:
    • Os construtores podem ser sobrecarregados para oferecer diferentes maneiras de inicializar um objeto, possibilitando a passagem de parâmetros para configurar o estado inicial do objeto.

Por exemplo:

public class Main {
         int z;
         public Main(int valor) {
              System.out.println("Construtor executado.");
              this.z = valor;
         }
}

Quando uma nova instância de Main é criada com um valor, o construtor configura z com esse valor e imprime “Construtor executado.”.

A ordem de inicialização em Java é crítica para garantir que os dados sejam configurados corretamente antes do uso de uma classe ou objeto. Compreender essa ordem é fundamental para a programação eficiente e evita muitos problemas comuns relacionados à inicialização incorreta de estados. Ao seguir o fluxo de variáveis estáticas e blocos estáticos, para variáveis de instância e blocos de instância, até a conclusão com o construtor, os desenvolvedores podem criar classes confiáveis e previsíveis.

Espero que tenham gostado! 

Forte abraço e até a próxima jornada!

Fonte: Gran Cursos Online

Download disponível – Ordem de inicialização de informações ao criar um objeto



Baixar apostila para concurso

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sair da versão mobile