This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Line 1 is not a declaration, which would look like
int sf1 = 20;
It's an assignment. And of course, variables declared inside a static initializer block -- or any block -- are local to that block; so if line 1 were a declaration, then this discussion of static variable initialization would be irrelevant.
As EFH points out, there is something missing in your post. You should look for something like
private static int sf1;
further down in the code listing. This is the declaration NOT line (1).
As a review, all variable declarations must contain the type of the variable. Instance variables also contain an optional access modifier (private, protected, or public) and an optional "final" specifier. Class variable declarations also contain the keyword "static". Declarations can also contain an = and a value to initialize the variable. However, without the type specifier, an = alone is just an assignment operation not a declaration.
I apologize for babbling on. I hope this clarifies the differences between declaration, initialization, and assignment. If not, please post your concerns or review your textbook for futher information.