Possible Duplicate:
How is an instance initializer different from a constructor?
When all the required work can be done inside the constructor, then why do we still need non-static block in Java?
EDIT: What about normal classes for which non-static blocks run everytime before the constructor?
In additional to @Bohemian’s answer.
If you have multiple constructors an intialiser block avoid duplication.
Technically the order is
In reality all this code is in the byte code for each constructor so there is nothing before or after the constructor at runtime.
Before there is any more confusion as to the order of initialization
prints