Static keyword in java with examples

In this post, we will see about static keyword in java.So static keyword can be associated with:

  • Variable
  • Method
  • Block
  • Nested class

Lets go through each one by one.

Static variable:

If any instance variable is declared as static.It is known as static variable.

Some points about static variables are:
  • Static variable belongs to a class not to a object.
  • Static variable are initialized only once in class area at the time of class loading
  • All objects share single copy of static variable
  • You don’t need to create object to access static variable.You can directly access it using class name.
  • Static variable can be accessed by instance java methods also.

If you create a class with two variables, one static, one non static.Non static variable of that class (objects created from that class) gets its own version of that variable. But with the static variable, it belongs to the class, and there is only one. Although any object from that class can reference it.
Example:
Lets take a very simple example.You want to track how many objects you have created.For that you have a static variable in your class.Lets say your class is:
Country.java

Output:
When you run above program,you will get following results:

Diagram:

In above example,we have one static variable named “countryCounter” so whenever we are creating one new object,its value will be incremented by 1 as counterCounter variable is being shared by all country objects and we have instance variable named “dummyCounter” so whenever any new object is created,its value is initialized to 0 again.

Static Method:

If any method is declared as static.It is known as static method.

Some points about static methods are:
  •  Static method belongs to a class not to object.
  •  Static method can be invoked directly using a className.Although It can be invoked using      objectName also
  • Generally static method are used for getting static fields.
  • You can access static methods through java instance methods.
  • You can not access non static method or instance variable in static methods.
  • A static method can not refer to this or super keyword.
Example:
We will create above example and will use one static method printCountryCounter for printing countryCounter variable.
Country.java
Output:
When you run above program,you will get following results: 

Why can’t you access non static member from static method:

When you call non static method from static method,you will get compilation error.
For example:In above printCountryCounter(),Lets say you call getName()
You will compilation error.

 Imagine a situation, when you are allowed to call getName() from printCountryCounter() .You can call printCountryCounter() just using class name so when you call printCountryCounter() ,what value getName() should return because value may be different for each new object and which value will it refer.So that is why,you are not allowed call non static member from static method.

Static block:

The static block, is a block of statement inside a Java class that will be executed when a class is first loaded in to the JVM
Some points about static blocks are:
  • Static blocks are used to initialize static data members.
  • Static blocks get executed before main method get executed.
Output:
When you run above program,you will get following results:

Static class:

In java,you can define a class within another class. Such a class is called a nested class. The class which enclosed nested class is known as Outer class. In java, we can’t make outer class static.
Only nested class can be declared as static
Some points about nested static class are:
  • Nested static class does not need reference of outer class.
  • A static class cannot access non-static members of the Outer class. It can access only static members of Outer class including private.

Example:

Output:
When you run above program,you will get following results:

Was this post helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *