The static keyword can be used in 3 scenarios
1) static variables
2) static methods
3) static blocks of code.
Lets look at static variables and static methods first.
static variable
It is a variable which belongs to the class and not to object(instance)
Static variables are initialized only once, at the start of the execution . These variables will be initialized first,
before the initialization of any instance variables
A single copy to be shared by all instances of the class
A static variable can be accessed directly by the class name and doesn’t need any object
Syntax : <class-name>.<variable-name>
static method
It is a method which belongs to the class and not to the object(instance)
A static method can access only static data. It cannot access non-static data (instance variables)
A static method can call only other static methods and cannot call a non-static method from it.
A static method can be accessed directly by the class name and doesn’t need any object
Syntax : <class-name>.<method-name>
A static method cannot refer to "this" or "super" keywords in anyway
main method is static , since it must be be accessible for an application to run , before any instantiation takes place.
Lets learn the nuances of the static keywords by doing some exercises!
Assignment: To Learn working of static variables & methods
Copy the following code into a editor
class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.
Student(){
//Constructor incrementing static variable b
b++;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
\\public static void increment(){
//a++;
\\}
}
class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
//Student.b++;
//s1.showData();
}}
Step 2) Save & Compile the code. Run the code as, java Demo.
Step 3) Expected output show below
Output:
Value of a = 0
Value of a = 1
Value of a = 0
Value of a = 2