Here we are going to understand about few important things about static keyword in Java along with its uses on variable, methods, and classes. Here is where Java developer comes into the picture of static before stepping into the actual world of programming. Therefore let us begin with static variables in Java.
1) It is not possible for you to access non-static member within the static context eg: static block or static method.
This is one of the significant mistake made by Java programmer mostly the one who initiated the programming in Java. As the main method in Java is static and count variable is non-static here the print statement within the main method will throw compile time error.
2) Local variables are not like methods and static variables that are not thread-safe in Java. There are lots of thread-safety issues in Java application and this is regarded as a common cause. As you can find every object of a class having the same copy of static variable it requires to be guarded by a class lock. This is the reason behind using the static variables by making sure completely about synchronized access for avoiding thread safety issues similar to race conditions.
3) With respect to usability, a static method has a benefit that does not require anything for creating an object at the time of accessing such methods, it is possible to call any static method with the help of Type of the class which has them. With respect to factory methods and utility methods, they are the best-suited java.lang.Math Class which is actually an ideal example and here various methods are static and here utility classes are apt in Java.
4 You can find another significant topic about a static method where you cannot override static method in Java. If the same method is declared in the subclass that is a static method with same name and method signature can only hide the superclass method, rather than overriding it. This is also referred to as method hiding in Java which is considered as both superclass and subclass that is resolved during compile time with the help of using reference Type variable.
5) It is possible for you to make a class static in java except for the higher level classes. Such classes are considered as a nested static class in Java. Improved cohesion is offered by the nested static class. One of the examples of a nested static class is HashMap. An entry which explains in detail about data structure used for holding the HashMap entries. With respect to any other inner class, nested static class also leads to a separate. Class file. Which implies that if you have configured five nested classes in your top-level class you can find six class files. Five for nested static class and one for top level class.
6) A static block is declared with the help of static keyword which is done during class loading. In Java, it is considered as static initializer block. If you are not declaring a static initializer block by yourself after which Java combines various static fields into one block and completing them during class loading. During instantiation and initialization of static fields, you can find any runtime exception that will be done by Java runtime into this error.
Reference site: java67