Skip to main content
Documents
Java keywordsIntroduction To JavaJava File HandlingJava Language BasicsJava ArraysJava Object-Oriented Programming

Static and Final Keyword

In Java, the static and final keywords are used to define specific behaviors for variables, methods, and classes. Understanding these keywords is crucial for writing efficient and maintainable Java code.

Static Keyword

The static keyword is used to indicate that a particular member belongs to the class itself rather than to any specific instance of the class. This means that the static member is shared across all instances of the class.

Usage

  • Static Variables: Shared among all instances of a class.
  • Static Methods: Can be called without creating an instance of the class.
  • Static Blocks: Used for static initialization of a class.
  • Static Nested Classes: Classes that do not have a reference to an instance of the outer class.

Syntax

static dataType variableName;
static returnType methodName() {
    // method body
}

Example: Static Variable and Method

public class StaticExample {
    static int counter = 0;

    static void incrementCounter() {
        counter++;
    }

    public static void main(String[] args) {
        StaticExample.incrementCounter();
        System.out.println("Counter: " + StaticExample.counter);
    }
}

In this example, counter is a static variable, and incrementCounter is a static method. Both can be accessed without creating an instance of StaticExample.

Final Keyword

The final keyword is used to declare constants, prevent method overriding, and restrict inheritance.

Usage

  • Final Variables: Once assigned, their value cannot be changed.
  • Final Methods: Cannot be overridden by subclasses.
  • Final Classes: Cannot be subclassed.

Syntax

final dataType variableName = value;
final returnType methodName() {
    // method body
}
final class ClassName {
    // class body
}

Example: Final Variable, Method, and Class

final class FinalExample {
    final int MAX_VALUE = 100;

    final void displayMaxValue() {
        System.out.println("Max Value: " + MAX_VALUE);
    }
}

In this example, MAX_VALUE is a final variable, meaning its value cannot be modified. The displayMaxValue method is final, so it cannot be overridden. The FinalExample class is final, preventing it from being subclassed.

Tips and Best Practices

  • Static Members: Use static variables and methods when the behavior or data is not dependent on instance-specific data.
  • Final Variables: Use final variables for constants to ensure their values remain unchanged throughout the program.
  • Final Methods: Use final methods to prevent subclasses from altering critical functionality.
  • Final Classes: Use final classes to prevent inheritance when you want to provide a complete and unmodifiable implementation.
  • Static Initialization: Use static blocks for complex static initialization tasks that cannot be handled by a simple assignment.
static {
    // static initialization block
}
  • Memory Considerations: Be cautious with static variables in memory-sensitive applications, as they persist for the lifetime of the application.

Learn Java Essentials

Build your Java skills from the ground up and master programming concepts.
Start Learning Java for Free