Static variables hold a value shared by all objects of a class. They help save memory and keep common data in one place.
Static variables in Java
class ClassName { static DataType variableName; }
Static variables belong to the class, not to any single object.
You can access static variables using the class name, like ClassName.variableName.
class Car { static int numberOfCars; }
Car.numberOfCars = 5;class Example { static String company = "TechCorp"; }
This program creates three Counter objects. Each time a Counter is made, the static count variable increases by 1. The showCount method prints the total count shared by all objects.
class Counter { static int count = 0; Counter() { count++; } static void showCount() { System.out.println("Count: " + count); } } public class Main { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); Counter c3 = new Counter(); Counter.showCount(); } }
Static variables keep their value as long as the program runs.
They are initialized only once when the class is loaded.
Use static variables carefully to avoid unwanted shared changes.
Static variables belong to the class, not individual objects.
They share the same value across all objects of that class.
Useful for counting objects or storing common data.
Practice
static variable in Java?Solution
Step 1: Understand static variable ownership
A static variable belongs to the class itself, not to any individual object.Step 2: Recognize sharing behavior
Because it belongs to the class, all objects share the same static variable value.Final Answer:
It belongs to the class and is shared by all instances. -> Option AQuick Check:
Static variable = shared by all objects [OK]
- Thinking static variables are unique per object
- Confusing static with instance variables
- Assuming static variables are deleted with objects
Solution
Step 1: Recall Java syntax for static variables
The keywordstaticcomes before the type when declaring a static variable.Step 2: Check each option
Onlystatic int count;follows the correct syntax.Final Answer:
static int count; -> Option AQuick Check:
static keyword before type = correct syntax [OK]
- Placing static after the variable name
- Mixing order of keywords
- Using invalid syntax order
class Test {
static int count = 0;
Test() {
count++;
}
public static void main(String[] args) {
new Test();
new Test();
System.out.println(Test.count);
}
}Solution
Step 1: Understand static variable incrementation
Each time a newTestobject is created, the constructor incrementscountby 1.Step 2: Count the number of objects created
Two objects are created, socountbecomes 2.Final Answer:
2 -> Option DQuick Check:
Two objects increment count twice = 2 [OK]
- Assuming count resets for each object
- Confusing instance and static variables
- Expecting compilation error due to static usage
class Counter {
static int count;
void increment() {
count++;
}
public static void main(String[] args) {
Counter c = new Counter();
c.increment();
System.out.println(count);
}
}Solution
Step 1: Check static variable initialization
Static int variables default to 0 if not explicitly initialized.Step 2: Verify method calls and access
The instance methodincrement()correctly increments the static variable. The static methodmainaccessescountdirectly, which is allowed.Final Answer:
No error; code runs and prints 1. -> Option BQuick Check:
Static variable accessible and increments correctly [OK]
- Thinking static vars must be explicitly initialized
- Assuming static vars can't be accessed without class name inside same class
- Confusing instance and static method access rules
class Employee {
static int employeeCount = 0;
String name;
Employee(String name) {
this.name = name;
employeeCount++;
}
static void printCount() {
System.out.println("Total employees: " + employeeCount);
}
}
public class Main {
public static void main(String[] args) {
Employee e1 = new Employee("Alice");
Employee e2 = new Employee("Bob");
e1.printCount();
Employee.printCount();
}
}What will be the output when running
Main?Solution
Step 1: Count employees created
TwoEmployeeobjects are created, soemployeeCountbecomes 2.Step 2: Understand static method calls
CallingprintCount()on instancee1or classEmployeeboth print the same static variable value.Final Answer:
Total employees: 2 Total employees: 2 -> Option CQuick Check:
Static method prints shared count = 2 [OK]
- Thinking static method can't be called on instance
- Assuming employeeCount resets per object
- Confusing output order or values
Ready to prove it?
Pass the test and this pattern moves unknown
