10 Differences Between final finally and finalize in java

What are final, finally, and finalize in Java?

Final, finally, and finalize are all keywords or methods used in Java programming language, but they serve different purposes. This article aims to explain the differences between final, finally, and finalize, along with their uses and examples in Java.

What is/are final and finally?

Final: The final keyword in Java is used to declare a constant value, a variable that cannot be changed once initialized. It is also used to make a class or method uninheritable or unchangeable.

Finally: The finally block is used in exception handling to ensure that a block of code is always executed, regardless of whether an exception is thrown or not.

Examples of final and finally:


public class Circle {
    final double PI = 3.14;
    void calculateArea(final double radius) {
        final double area = PI * radius * radius;
        System.out.println("Area: " + area);


public class FileHandler {
    public void openFile() {
        try {
            // Code to open a file
        } catch (IOException e) {
            // Handle the exception
        } finally {
            // Code to close the file

What is/are finalize in Java?

Finalize: The finalize() method is a special method in Java that is called by the garbage collector when an object is about to be garbage collected. It is used to perform any necessary cleanup actions or resource releasing before the object is destroyed.

Examples of finalize in Java:

public class MyClass {
    public void finalize() {
        // Code to release any allocated resources

Uses of finalize in Java:

  • Releasing system resources like file handles, database connections, etc.
  • Closing network connections
  • Releasing memory allocated to native code or external libraries

Differences between final, finally, and finalize in Java:

Difference Area Final Finally Finalize
Usage Applying restrictions on variables, methods, or classes Ensuring code execution regardless of exceptions Performing cleanup operations before object destruction
Keyword Yes Yes No
Applicable Entities Variables, methods, or classes Try-catch block Object
Inheritance Prevents inheritance N/A N/A
Execution Immediately when initialized Always executed Automatically by the garbage collector
Multiple Usage No No No
Exception Handling No direct relation Used with try-catch and optionally with finally N/A
Memory Management No No Manual resource cleanup
Responsibility Enforcing consistency and immutability Ensuring code execution order Cleanup and releasing resources
Recommended Usage For constants or when immutability is required Exception handling or resource cleanup Infrequent use due to deprecated status


In conclusion, final, finally, and finalize are different concepts in Java. Final is used to declare constants or enforce immutability, finally ensures code execution consistency in exception handling, and finalize is used for cleanup operations before object destruction. Each has its specific usage and should be applied accordingly.

People Also Ask:

  • Q: What is the purpose of the final keyword in Java?
  • The final keyword is used to declare constants or enforce immutability, preventing any modifications to the variable, method, or class.

  • Q: When should I use the finally block in Java?
  • The finally block should be used when you need to ensure that a block of code is always executed, regardless of whether an exception is thrown or not. It is typically used for cleanup or resource releasing.

  • Q: What happens inside the finalize() method in Java?
  • The finalize() method is called by the garbage collector before destroying an object. It can be overridden to perform cleanup actions or release resources allocated by the object.

  • Q: Is the finalize() method still useful in Java?
  • The finalize() method is generally considered deprecated and its usage is discouraged. It is recommended to use other mechanisms, such as try-finally or try-with-resources, for resource cleanup.

  • Q: Can finalize() prevent an object from being garbage collected?
  • No, the finalize() method does not prevent an object from being garbage collected. It is only called once by the garbage collector before the object’s memory is released.

Leave a Comment

content of this page is protected

Scroll to Top