The final keyword in Java can be applied to variables, methods, and classes. It restricts changes to final entities. Final variables must be initialized after declaration and their values cannot be changed. Final methods cannot be overridden in subclasses. Final classes cannot be subclassed. Blank final variables are not initialized in their declaration and can only be initialized in a constructor or static block.