Static Variable vs Instance Variable

Java language uses variables in different scopes: static scope, local scope, block scope. Java has different ways of storing data either as primitive data types or as Objects. Class specifies type of a object. Static variable is defined generically for the entire class and not for a specific object. Hence Static variables belong a class and hence has the same value for all objects of the class. Instance (object) variables belong to a specific object.

Static variable Instance variable
A static variable is a property of a class. An instance variable is a property of an instance.
A static variable is created only once when the classloader loads the class. An instance variable is created everytime an instance is created.
A static variable is used when you want to store a value that represents all the instances like count, sum, average etc. An instance variable is used to store a value that represents property of single instance.

Declaring an static variable

    static int countOfOrders;

Declaring an instance variable

    String OrderId;

 Let us consider the following example:

public class Order{
	//static variable
	static int countOfOrders;
	//instance variable
	String orderId;

public static void main(String args[]){ Order orderInst = new Order(); //Assigning to static variable Order.countOfOrders = 10; //Assigning to instance variable orderInst.orderId="Ord1_11Nov2017_3578923"; } }

Assigning to static variable

    Order.countOfOrders = 10;
    orderInst.countOfOrders= 11;

Both the above assignments work. However, Using the class name is the preferred approach.

Assigning to instance variable