1. When a variable is defined 'static', it's called a "class variable', that is, all the objects of that class own that variable. A class variable can be accessed with the class, without creating objects of the class.
2. When a method is defined 'static', it can be called with class without need to create objects. These methods are called 'class methods'. Note that methods declared static cannot access variables without static. They cannot refer to this or super in any way.
3. static block. Code in static block will be executed once when the class is firstly loaded.
4. static nested class. Declared inside another class, has no access to instance-specific data.