Static block is executed first.
Static block is executed even if only a static field is accessed without instantiating an object. In this scenario constructor or class method (onCreate) are nor executed yet, if only static field is accessed.
All static code is executed when the Class object is created. This (Class) object physically holds static variables (class variable) in the memory. Static block can be initialization for Class object. Later every class instance accesses static vars in the Class object.
Constructor is also a static method internally since it's called before the object is instantiated.
This link goes into more details if you'd like to study it further:
http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html