Static Methods
1. Introduction
In Java, methods can be either instance methods (belonging to objects) or static methods (belonging to the class).
A static method is associated with the class itself, not with any specific object.
Because of this, static methods:
- Can be called without creating an object
- Are loaded into memory when the class is loaded
- Are used for utility, helper, or common functionality
Examples of static methods you already use:
Math.sqrt(16)
Integer.parseInt("10")
Arrays.sort(arr)All belong to their respective classes, not objects.
2. What Is a Static Method?
A static method is declared using the static keyword:
static void showMessage() {
System.out.println("Hello from static method");
}To call it:
showMessage(); // inside same class
ClassName.showMessage(); // outside classStatic methods are part of class-level memory (Method Area of JVM).

3. Why Do We Use Static Methods?
Static methods are useful when:
- Logic does not depend on object state
- You want to perform general-purpose utility operations
- You want quick access without creating objects
Examples:
- Mathematical operations (
Math.max,Math.pow) - Conversion (
Integer.parseInt) - Factory methods (like
List.of())
4. Syntax and Example
class Calculator {
static int add(int a, int b) { // static method
return a + b;
}
int multiply(int a, int b) { // instance method
return a * b;
}
}Calling static method:
int result = Calculator.add(5, 3);Calling instance method:
Calculator c = new Calculator();
int result = c.multiply(5, 3);Important difference:
| Feature | Static Method | Instance Method |
|---|---|---|
| Belongs to | Class | Object |
| Call using | Class name | Object |
| Can access instance variables? | No | Yes |
| Can access static variables? | Yes | Yes |
5. Restrictions of Static Methods (Very Important)
Static methods cannot access instance members directly.
5.1 Static methods cannot use this or super
static void test() {
this.x = 5; // ERROR
}Reason: this refers to a specific object, and static methods do not run on objects.
5.2 Static methods cannot access instance variables or instance methods directly
class Demo {
int a = 5;
static void show() {
System.out.println(a); // ERROR
}
}To access instance members, create an object:
static void show() {
Demo d = new Demo();
System.out.println(d.a); // OK
}6. When Should You Use Static Methods?
Use a static method when:
- Behavior does not depend on instance variables
- No need to modify or rely on object state
- You want shared utility logic
Examples:
Math.random()- Logging utilities
- File utility methods
- Validation helpers (
isEmpty,isValidNumber)
7. Real-World Example: Utility Class
class StringUtil {
static boolean isNullOrEmpty(String s) {
return s == null || s.isEmpty();
}
}
public class Main {
public static void main(String[] args) {
System.out.println(StringUtil.isNullOrEmpty("")); // true
System.out.println(StringUtil.isNullOrEmpty("Hello")); // false
}
}Static methods help build reusable libraries.
8. Static Methods and Memory
Static methods are stored in the Method Area of JVM, not on the heap.
Lifecycle:
- Class is loaded into JVM
- All static methods and static variables are allocated
- They stay until class unloading (usually when program ends)
Instance methods, in contrast, rely on objects stored in heap memory.
9. Static Method Overloading
Static methods can be overloaded:
static void test() { }
static void test(int a) { }But they cannot be overridden in the true sense. (What looks like overriding is actually method hiding—covered later.)
10. Static Blocks vs Static Methods (Short Preview)
Static blocks execute once when the class loads:
static {
System.out.println("Static block run");
}Static methods execute whenever they are called.
Full detail is inside static-block.mdx (if included in your structure).
11. Complete Example
class MathOperations {
static int square(int n) {
return n * n;
}
static int cube(int n) {
return n * n * n;
}
void displayMessage() {
System.out.println("Instance method");
}
}
public class Main {
public static void main(String[] args) {
System.out.println(MathOperations.square(4)); // 16
System.out.println(MathOperations.cube(3)); // 27
MathOperations obj = new MathOperations();
obj.displayMessage();
}
}12. Summary
- Static methods belong to the class, not objects.
- Called using class name:
ClassName.method() - Cannot access instance members directly.
- Cannot use
thisorsuper. - Ideal for utility, helper, and common operations.
- Stored in JVM Method Area.
- Can be overloaded but not overridden (only hidden).
This completes Static Methods in Java.
Written By: Shiva Srivastava
How is this guide?
Last updated on
