It's an instance initialiser, together with an default constructor.
A class without an explicit constructor, is given a synthetic, public, no-args constructor.
Constructors without a call to this() or super() (possibly with arguments) are given an implicit call to super() (without arguments, possibly something odd happens with inner classes).
Immediately after an implicit or explicit call to super(), all the code in field initialisers and instance initialisers gets inserted in the order it appears in the source code.
So after javac has finished with your code it looks a little like:
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");
}
}