What Is Final And Finally In Java

Java Programming

In Java, the keywords “final” and “finally” serve different purposes and play important roles in the language. Let’s explore what these keywords mean and how they are used in Java programming.

The “final” Keyword

The “final” keyword in Java is used to declare that a variable, method, or class cannot be changed or overridden. When applied to a variable, it means that its value cannot be modified once assigned. When used with a method, it prevents the method from being overridden by subclasses. And when used with a class, it means that the class cannot be subclassed.

For example, consider the following code snippet:

final int myNumber = 10;

In this case, the variable “myNumber” is declared as final, so any attempt to change its value will result in a compilation error.

Similarly, if we declare a method as final, it cannot be overridden by any subclass. This is often used to enforce a specific behavior in a method that should not be changed.

On the other hand, when a class is declared as final, it cannot be extended by any other class. This is typically done to prevent further subclassing and to maintain the integrity of the class’s implementation.

The “finally” Block

The “finally” block in Java is used in conjunction with try-catch blocks to provide a piece of code that is always executed, regardless of whether an exception is thrown or not. This block is executed after the try block and any associated catch blocks, regardless of whether an exception occurred or not.

The syntax for using the “finally” block is as follows:

try {
// Code that might throw an exception
} catch (Exception e) {
// Exception handling code
} finally {
// Code that is always executed

The main purpose of the “finally” block is to perform cleanup operations, such as closing resources, releasing locks, or flushing buffers. It guarantees that these operations will be executed even if an exception occurs.

Personal Commentary

As a Java developer, I find the “final” and “finally” keywords to be essential tools in my programming arsenal. The “final” keyword provides a way to enforce immutability and prevent unintentional modifications to variables, methods, and classes. It helps me write more robust and reliable code by ensuring that certain elements cannot be changed.

The “finally” block, on the other hand, gives me peace of mind when dealing with potential exceptions. By placing critical cleanup code in the “finally” block, I can be confident that important resources will be released, regardless of whether an exception occurs or not. This helps me write more resilient code and maintain the integrity of my applications.


In conclusion, the “final” and “finally” keywords in Java serve distinct purposes. The “final” keyword is used to enforce immutability and prevent changes to variables, methods, and classes. On the other hand, the “finally” block ensures that designated code is always executed, providing a mechanism for cleanup operations. Understanding and properly utilizing these keywords is crucial for writing robust and reliable Java code.