Это инициализатор экземпляра вместе с конструктором по умолчанию.
Классу без явного конструктора предоставляется синтетический общедоступный конструктор без аргументов.
Конструкторам без вызова this()
или super()
(возможно, с аргументами) дается неявный вызов super()
(без аргументов, возможно, что-то странное происходит с внутренними классами).
Сразу после неявногоили явный вызов super()
, весь код в инициализаторах полей и инициализаторах экземпляров вставляется в том порядке, в котором он указан в исходном коде.
Так что после того, как javac завершил работу с вашим кодом, он будет выглядеть примерно так:
public class TestBlk {
static {
System.out.println("static block");
}
public TestBlk() {
// Call constructor of java.lang.Object.
super();
// From instance (and field)initialiser.
System.out.println("TEst block");
// Rest of constructor:
}
public static void main(String args[]){
TestBlk blk = new TestBlk();
System.out.println("main block");
}
}