Статические блоки инициализации позволяют выполнять более сложную инициализацию, например, используя условные выражения:
static double a;
static {
if (SomeCondition) {
a = 0;
} else {
a = 1;
}
}
Или когда требуется больше, чем просто конструирование: при использовании компоновщика для создания вашего экземпляра, обработки исключений или работы, отличной отсоздание статических полей необходимо.
Блок статической инициализации также запускается после встроенных статических инициализаторов, поэтому действует следующее:
static double a;
static double b = 1;
static {
a = b * 4; // Evaluates to 4
}