Só se a JVM estiver executando errado…rsss…
Mas nao tem segredo:
ao usar a classe para imprimir o conteudo statico do campo “teste”, ele primeiro inicializa os blocos estaticos da classe, carregando teste=“a”, depois executando o bloco onde inicializa nome=“b”, imprime ele ( output: “b” ). Cria uma instancia da classe TesteA, que por sua vez chama o TesteA() que é o contrutor da classe, imprimindo “c” ( output: “b c” ). Depois de todos os blocos inicializados ok, imprime o conteudo do campo estatico teste que é “a” ( output: “b c a” )…
Vamos lá,
O método main esta imprimindo a a variável de referência “teste” da classe TesteA, porém antes de imprimir está variável, ela irá executar um classloader para carregar a classe TesteA em memóri, ao executar o construtor ela irá executar primeiramente o bloco static (imprimindo “b”), logo depois executará o construtor de TesteA(imprimindo “c”), e somente depois imprimindo a variável teste (a). Logo, “bca”.
Acho que é mais ou menos isso. Não sei se me fiz entender…