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