The code in a block is an instance initializer block. It is executed each time an instance of the class is created. You can have any number of instance initializers. Instance initializers are executed after superclass construction but before the constructor of the current class is executed. Otherwise, they are executed in top-down declaration order.
Contrast with the idea of a static initializer block, which is executed when a class is loaded. A static initializer block looks the same as an instance initializer block except it is preceded with the
word static.
One significant use for instance initialization blocks is to allow for initialization of classes that can't have constructors--anonymous inner classes.
-Jeff-