Final variables are not assigned a default value when an object is instantiated.
If a value is not assigned at the same time that the variable is declared a value can be assigned in either a constructor or an initialisation block but not both. See example below:
This example shows that the final variable is assigned a value in a initialisation block.
Word of warning: if the code in the constructor or initialisation block uses the final variable then the variable must be declared in the code before it is used. See this post:
https://coderanch.com/t/564811/java-programmer-SCJP/certification/why-code-showing-compile-time