Мой вопрос касается одного конкретного использования статического ключевого слова. Ключевое слово static можно использовать для покрытия кодового блока внутри класса, который не принадлежит какой-либо функции. Например, следующий код компилирует:
public class Test {
    private static final int a;    
    static {
        a = 5;
        doSomething(a);
    }
    private static int doSomething(int x) {
        return (x+5);
    }
}
Если вы удалите ключевое слово static, оно жалуется, потому что переменная a равна final. Однако можно удалить как ключевые слова final, так и static и скомпилировать его.
Это сбивает меня с толку в обоих направлениях. Как я должен иметь раздел кода, который не принадлежит ни одному методу? Как можно вызвать его? В общем, какова цель этого использования? Или лучше, где я могу найти документацию об этом?
