Порядок инициализации статической переменной, Java [duplicate]
Возможный дубликат:
Инициализация статического класса Java
в каком порядке выполняются статические блоки и статические переменные в классе?
Когда я запускаю этот код, ответ равен 1, я думал, что это будет 2. Каков порядок инициализации и значение k на каждом шаге?
public class Test {
static {k = 2;}
static int k = 1;
public static void main(String[] args) {
System.out.println(k);
}
}
Редактировать 1: Как продолжение "k установлен в значение по умолчанию " тогда почему следующий код нет компилировать? Theres ошибка "Не могу сослаться на поле перед нимопределено ".
public class Test {
static {System.out.println(k);}
static int k=1;
public static void main(String[] args) {
System.out.println(k);
}
}
Редактировать 2: По какой-то неизвестной мне причине это ^ работает, когда вместо "k" его "Test.k».
Спасибо за ответы на все вопросы. этого будет достаточно: D