Bloco static

Pessoal, será que alguém pode me explicar o que esse bloco static faz, e por que ele é válido??

[code]class A
{
A()
{
System.out.print("CA ");
}

static 
{
      System.out.print("SA ");
 }

}

class B extends A
{
B()
{
System.out.print("CB ");
}

 static 
 {
      System.out.print("SB ");
 }  

 public static void main(String[] args)
 {
       new B();
 }

}[/code]

Nunca essa sintaxe…

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 - ");
     }
}

Fala diego2005,

Os blocos estáticos são executados apenas na primeira vez que as classes são carregadas na memória e não podem ser herdados.

Veja o essa explicação no jGuru

[]s
Eduardo

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.