Этот код ниже распечатает 5.
static {
x = 5;
}
static final int x;
public static void main(String[] args) {
System.out.println(x);
}
Хотя я не понимаю, насколько это законно. Есть и другие ссылки, без четкого ответа, почему это работает.
Который будет загружен первым статическим переменный или статический блок?
Который будет загружен первым статическим блок или статическая переменная?
потому что ответ, который я встретил, сказал, что люди говорят что-то вроде строк «статические блоки инициализируются в том порядке, в котором они появляются в исходном коде».
Но в этом случае x = 5 предшествует static final int x в исходном коде.
static final int x
вообще не выполняется. Это декларация. - person user207421   schedule 06.02.2018