Welcome to JavaRanch
what you have read is correct
from JLS
A blank final is a final variable whose declaration lacks an initializer.
Once a final variable has been assigned, it always contains the same value
in your case the blank variable is an instance variable, so you can only access the variable after the constructor execution. so it make sense to initialize i value in constructor.
remember if the variable i is static, then you need a static initializer instead of constructor to initialize i value
hth