alguém poderia me explicar o que é este conteúdo init, que nunca tinha visto até olhar o livro da khaty ? pelo q vi , ele executa primeiro q o constructor! 
Conteúdo - bloco init!
3 Respostas
Os blocos Staticos rodam primeiro que o construtor eles rodam quando a classe é carregada pela primeira vez. E os blocos inits rodam na sequencia caso haja mais de um depois que o contrutor é carregado.
Olá!
Como o Anderson falou, só para exemplificar:
Os “static init blocks” executam uma vez quando a classe é carregada;
Os “instance init blocks” executam toda vez que uma instância da classe é criada. E depois da chamada super() do construtor.
public class InitBlocks {
static {
System.out.println("Executa qdo a classe é carregada pelo ClassLoader!");
}
InitBlocks() {
//super();
System.out.println("Continuando após os instance init blocks...");
}
{ System.out.println("É executado quando uma instância da classe é criada!); }
static{
System.out.println("Aqui também é válido!");
}
public static void main(String[] s) {
new InitBlocks();
new InitBlocks();
}
}
Saída:
Executa qdo a classe é carregada pelo ClassLoader!
Aqui também é válido!
É executado quando uma instância da classe é criada!
Continuando após os instance init blocks...
É executado quando uma instância da classe é criada!
Continuando após os instance init blocks...
Acho que é isso.
os blocos das instancias… se nao to equivocado eles rodam sempre antes(ou é depois) dos contrutores… e quando se dar um new. Vamos fazer um teste:
class TEste{
{System.out.println("guj");}
public static void main(String args[]){
TEste t = new TEste();
TEste t2 = new TEste();
Veja ai quem executa primeiro… 
A kathy trata desse assunto sim… ou é no cap 2 ou é no 3… nao lembro perfeitamente… porem ela nao mostra com muitos exemplos mais aborda todas as regras…