Static class variables are initialized before static code blocks. Because you are using a primitive variable, it initializes to it's default value (0). You are allowed to assign the value only once, but if you do not assign a value on creation, Java will assign the default value - 0 for ints, null for objects, etc.
The compiler will only fail on uninitialized local variables (in methods). All class variables are initialized automatically.
Not everybody knows about this, but it is widely understood. Neil Gafter and Josh Block riff on this in Puzzle #49 in "Java Puzzlers." Quoting from that book,
... it is possible to observe a final static field before it is initialized, when it still contains the default value for its type... Final fields are constants only if the initializing expression is a constant expression... in summary, be careful of class initialization cycles.
Note that your variable here does not have a constant expression initializer -- it has no initializer, as appropriate for a blank final.