Last Updated : 23 Jul, 2025
In Java, methods are mainly divided into two parts based on how they are connected to a class, which are the static method and the Instance method. The main difference between static and instance methods is listed below:
The following table lists the major differences between the static methods and the instance methods in Java.
Features
Static method
Instance method
Definition
Created using the static keyword and retrieved without creating an object.
Requires an object of its class to be invoked.
Access
Access only static variables and methods.
Can access both static and instance members.
this
keyword
Cannot use the this keyword within static methods.
Can use the this keyword to refer to the current object.
Override
Does not support runtime polymorphism
Supports runtime polymorphism
Memory Allocation
Stored in Method Area (PermGen space in Java 7 and earlier, replaced by Metaspace in Java 8+)
Stored in Method Area (PermGen/Metaspace)
Static MethodA static method can be created using the static keyword. It can be called without creating an object of the class, referenced by the class name itself, or a reference to the object of that class.
Memory Allocation of Static MethodsStatic methods belong to the class, not its objects, and they are stored in the Permanent Generation Space of the heap. Their local variables and arguments are stored in the stack. They can be called without creating an instance of the class, using ClassName.methodName(args).
Important Points:
Example:
Java
// Java program to demonstrate the static method
import java.io.*;
class Geeks {
// static method
public static void greet(){
System.out.println("Hello Geek!");
}
public static void main (String[] args) {
// calling the method directily
greet();
// using the class name
Geeks.greet();
}
}
Hello Geek! Hello Geek!
Explanation: The above example shows a static method greet() inside the Geeks class, static methods can be called without creating an object. In the main method, we are not creating an object of Geek class we are calling the method directly by the class name which is Geeks and then we are printing the output.
Instance MethodInstance methods are the methods that require an object to work. We need to create an object of the class where the method is written, then only we can access the instance method.
Memory Allocation of Instance MethodInstance methods are stored in the Permanent Generation space of the heap (till Java 7, replaced by Metaspace from Java 8 for better efficiency). Their parameters, local variables, and return values are allocated on the stack. They can be called within their class or from other classes, based on their access modifiers.
Important Points:
Example:
Java
// Java program to demonstrate the use of instance method
import java.io.*;
class Test {
String n = "";
// Instance method
public void test(String n) {
this.n = n;
}
}
class Geeks {
public static void main(String[] args) {
// create an instance of the class
Test t = new Test();
// calling an instance method in the class 'Geeks'
t.test("GeeksforGeeks");
System.out.println(t.n);
}
}
Explanation: The above example shows how to use an instance method in Java. We are creating an object of the Test class and calling the test method to set a value and then we are printing the output.
Note: Instance method requires an object to be called.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4