Sim o bloco estatico é valido e como um membro estatico pertence a classe e não ao objeto.
O bloco estatico é executado durante o carregamento da classe pelo classloader !
Alem de blocos estaticos vc pode ter “blocos de instancia”, o qual será sempre executado durante a criacao do objeto, antes do metodo construtor, por exemplo
class A
{
A()
{
System.out.print("CA ");
}
{
//bloco de instancia
System.out.println(" - GUJ - ");
}
}
Um bloco estático é executado somente uma vez, imediatamente após a primeira referencia a classe, isto é, no carregamento da memória.
Como o bloco de código estático é executado no carregamento da classe, consequentemente será executado antes da chamada ao construtor da classe.
Dentro de um bloco de código estático poderemos acessar somente atributos e métodos estáticos.