
Блоки инициализации выполняются до вызова конструктора. Если для инициализации переменной нужно выполнить какие-либо вычисления, удобнее вынести это в блок инициализации, чтобы не загромождать конструктор.
public class Definition {
List<Character> list;
// Блок инициализации
{
list = new ArrayList<>();
for (int i = 50; i <= 60; ++i) {
char value = (char)(i * 2);
list.add(value);
}
System.out.println("list: " + list);
}
// Конструктор
Definition() {
System.out.println("Constructor is called");
}
public static void main(String[] args) {
new Definition();
}
}
/*
list: [d, f, h, j, l, n, p, r, t, v, x]
Constructor is called
*/