При инициализации статических элементов в Java я могу сразу их создать с каким-то значением:
public class WhyDude {
static int x = 5;
}
Однако, с массивом так не получится:
public class WhyDude {
static int x = 5;
static int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
}
Syntax error on token ";", { expected after this token
Но при использовании статического блока инициализации всё работает корректно:
public class WhyDude {
static int x = 5;
static int[] arr = new int[3];
static {
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
}
public static void main(String[] args) {
for (int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
}
}
Возникает вопрос: почему переменные примитивного типа мы модем инициализировать без использования статического блока инициализации, а при массиве из элементов примитивного типа уже не обойтись без статического блока?