Ordem de inicialização da variável estática, Java [duplicado]

Duplicata Possível:
Inicialização de classe estática de Java
em que ordem os blocos estáticos e variáveis ​​estáticas em uma classe são executados?

Quando executo este código a resposta é 1, eu pensei que seria 2. Qual é a ordem de inicialização e o valor de k em cada etapa?

public class Test {

static {k = 2;}
static int k = 1;

public static void main(String[] args) {
    System.out.println(k);
}
}

Edit 1: Como um acompanhamento para "k está definido para o valor padrão", então por que este próximo código não compila? Existe um erro "Não é possível referenciar um campo antes de ser definido".

public class Test {

static {System.out.println(k);}
static int k=1;

public static void main(String[] args) {
    System.out.println(k);
}
}

Edit 2: Para alguns desconhecido para mim razão it ^ funciona quando em vez de "k" seu "Test.k".

Obrigado por todas as respostas. isso vai sufice: D

questionAnswers(2)

yourAnswerToTheQuestion