Конструктор будет вызываться каждый раз, когда создается экземпляр класса.Таким образом, приведенный выше код означает, что значение x будет повторно инициализироваться при каждом создании экземпляра.Но поскольку переменная объявлена как final (и static), вы можете сделать это только
class A {
private static final int x;
static {
x = 5;
}
}
Но если вы удалите static, вам будет разрешено сделать следующее:
class A {
private final int x;
public A() {
x = 5;
}
}
ORэто:
class A {
private final int x;
{
x = 5;
}
}