В чем разница между статическим и нестатическим блоком кода инициализации

Мой вопрос об одном конкретном использовании статического ключевого слова. Можно использовать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 ключевые слова и сделать его компиляцией.

Это смущает меня в обоих направлениях. Как я должен иметь раздел кода, который не принадлежит ни к какому методу? Как это можно вызвать? Вообще, какова цель этого использования? Или лучше, где я могу найти документацию по этому поводу?

Ответы на вопрос(8)

Ваш ответ на вопрос