Normally each object has its own copy of the members defined within the class that was used to create it; these are known as instance variables. The static modifier can be used to state that a particular member is to be shared between all the objects for that class. Static members are sometimes referred to as class variables because the variable is related to the class, not to each object created from the class.
The static specifier ensures that the allocation only occurs once, regardless of the number of objects that are created. This provides the programmer with a common variable for all instances of a class.
The static specifier cannot be used with local variables, i.e. variables declared within a method. But it can be applied to methods and has the same effect, for example, the main method of a class needs to be static so the JVM can run the program without creating an instance of the class.
Hope the above helps (I also have had some fun understanding this)