Start here. This is the direct spoken answer to practice first.
Overview
The same keyword restricts different kinds of change depending on where it is applied.
A final variable can be assigned only once. If it holds an object reference, the reference cannot point to a different object after assignment, but the object may still be mutable. A final method cannot be overridden by a subclass. A final class cannot be extended. Those restrictions can express design intent, but final is not a general immutability keyword. An immutable object requires that its observable state cannot change after construction.