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