Static blocks are executed when a class is initialized.A class is initialized either
1. when you instantiate it OR
2. when you execute a static method of the class OR...well... Read
JLS 12.4 for all the scenarios!
Also, when a class is initialized its direct super class needs to be initialized first.
In your application, you instantiated an object of class Two. So, first the super class was initialized(and therefore its static block was executed) followed by initialization of class Two.
That explains the output, I guess.
Cheers!