Hello,
I have to admit it's excellent question.
Because,
when you declare a static attribute as final, it cannot be changed in it's life, not even in construction
thread, where final but non-static attributes can be changed.
If you see, It's .class file code, you will see that all static final will be converted to Constant Value, so it may be assigned at compilation time only. [I don't have solid proof to prove, so i said may be, otherwise i am confident enough]. So there is nothing like forward assignment.
And anyhow, outside method body [& static body], there is nothing like top-down sequence execution. isn't it.
For
testing i coded this class, i hope it'll help you all to understand.