A variable can be declared final. A final variable may only be assigned to once. It is a compile time error if a final variable is assigned to unless it is definitely unassigned (§16) immediately prior to the assignment.
A blank final is a final variable whose declaration lacks an initializer.
So, it says indeed that you must provide an initializer for final variables, otherwise you'll get a compiler error.
A static final field must be initialised by a static initialiser, or immediately on declaration.
An instance final field must be initialised before every constructor (overloaded or otherwise) completes. Again initialisation immediately on declaration is permissible.
The idea behind a field is that it will not normally take the default values of 0/null/false. Since a final field can only be assigned to once, the compiler checks that it has been assigned a value at all, once and once only. Although in special cases the value wanted will be identical to the default values, it was decided to insist on an assignment.
This is an unusual example, in that the final field ought to have the value zero:
I child proofed my house but they still get in. Distract them with this tiny ad: