Instance Initialization is for initializing non-static variables for each object (while static for class). The blue block is executed before either one of the constructors, so it guarantees certain operations occur regardless of which constructor is called.
It seems very similar with Static Initialization except the static keyword. But note that, the Static Initialization is for class, you do not even need to create an object of that class, while Instance Initialization is for creating objects, it initializes variables for new objects,
class Mug {
}
class Mugs {
}
public class Client {
}
Result:
Main...
Mug--->3
Mug--->1
Mug--->2
This is in Block Clause...
Mugs()...
Main...
Mug--->1
Mug--->2
This is in Block Clause...
Mugs(int)...
From 《Thinking in Java》 4th Edition .p191