Understanding "static" in "public static void main" in Java Last Updated : 28 Oct, 2020 Summarize Suggest changes Share Like Article Like Report Following points explain what is "static" in the main() method: main() method: The main() method, in Java, is the entry point for the JVM(Java Virtual Machine) into the java program. JVM launches the java program by invoking the main() method. Static is a keyword. The role of adding static before any entity is to make that entity a class entity. It means that adding static before methods and variables make them class methods and class variables respectively, instead of instance methods and instance variables. Hence, static methods and variables can be directly accessed with the help of Class, which means that there is no need to create objects in order to access static methods or variables. // Making a function as static static void func() {} // Making a variable as static static int var;Static methods: When a method is declared with static keyword, it is known as static method. As discussed above, any static member can be accessed before any objects of its class are created, and without reference to any object. // Making a static function class GfG { static void func() {} } // Calling a static function GfG.func();Static main() method: When the static keyword is added in the function definition of main() method, then it is known as static main() method. class GfG { // Making a static main function public static void main(String[] args) {} } Need of static in main() method: Since main() method is the entry point of any Java application, hence making the main() method as static is mandatory due to following reasons: The static main() method makes it very clear for the JVM to call it for launching the Java Application. Otherwise, it would be required to specify the entry function for each Java application build, for the JVM to launch the application.The method is static because otherwise there would be ambiguity which constructor should be called. Example, if the class looks like this: public class GfG{ protected GfG(int g){} public void main(String[] args){ } }The JVM now enters an ambiguity state deciding whether it should call new GfG(int)? If yes, then what should it pass for g? If not, then should the JVM instantiate GfG without executing any constructor method? There are just too many edge cases and ambiguities like this for it to make sense for the JVM to have to instantiate a class before the entry point is called. That's why main is static.The main() method is static because its convenient for the JDK. Consider a scenario where it's not mandatory to make main() method static. Then in this case, that just makes it harder on various IDEs to auto-detect the 'launchable' classes in a project. Hence making it a convention to make the entry method 'main()' as 'public static void main(String[] args)' is convenient. What if we don't write "static" before the main method: If we do not write "static" before the main method then, our program will be compiled without any compilation error(s). But at the time of execution, the JVM searches for the main method which is public, static, with a return type and a String array as an argument. If such a method is not found then an error is generated at the run time. Java /*package whatever //do not write package name here */ import java.io.*; class GFG { public void main (String[] args) { System.out.println("GFG!"); } } Output: An error message will be shown as follows Advertise with us S ShraddhaVarat Follow Similar Reads Java Methods Java Methods are blocks of code that perform a specific task. A method allows us to reuse code, improving both efficiency and organization. All methods in Java must belong to a class. Methods are similar to functions and expose the behavior of objects.Example: Java program to demonstrate how to crea 8 min read Parameter Passing Techniques in Java with Examples There are different ways in which parameter data can be passed into and out of methods and functions. Let us assume that a function B() is called from another function A(). In this case A is called the "caller function" and B is called the "called function or callee function". Also, the arguments wh 4 min read Java is Strictly Pass by Value! In order to understand more of how the java is processing the parameter in methods and functions, lets compare the java program with a C++ code which would make it more clear and helps you get the major difference between how the parameters are being passed to any methods or functions wrt passing pa 6 min read How are parameters passed in Java? See this for detailed description. In Java, parameters are always passed by value. For example, following program prints i = 10, j = 20. java // Test.java public class Test { // swap() doesn't swap i and j public static void swap(Integer i, Integer j) { Integer temp = new Integer(i); i = j; j = temp 1 min read Method overloading and null error in Java In Java it is very common to overload methods. Below is an interesting Java program. Java public class Test { // Overloaded methods public void fun(Integer i) { System.out.println("fun(Integer ) "); } public void fun(String name) { System.out.println("fun(String ) &quo 2 min read Can we Overload or Override static methods in java ? Let us first define Overloading and Overriding. Overriding: Overriding is a feature of OOP languages like Java that is related to run-time polymorphism. A subclass (or derived class) provides a specific implementation of a method in the superclass (or base class). The implementation to be executed i 5 min read Access specifier of methods in interfaces In Java, all methods in an interface are public even if we do not specify public with method names. Also, data fields are public static final even if we do not mention it with fields names. Therefore, data fields must be initialized. Consider the following example, x is by default public static fina 1 min read Java main() Method - public static void main(String[] args) Java's main() method is the starting point from where the JVM starts the execution of a Java program. JVM will not execute the code if the program is missing the main method. Hence, it is one of the most important methods of Java, and having a proper understanding of it is very important.The Java co 6 min read Is main method compulsory in Java? The answer to this question depends on the version of java you are using. Prior to JDK 7, the main method was not mandatory in a java program. You could write your full code under static block and it ran normally. The static block is first executed as soon as the class is loaded before the main(); t 2 min read Understanding "static" in "public static void main" in Java Following points explain what is "static" in the main() method: main() method: The main() method, in Java, is the entry point for the JVM(Java Virtual Machine) into the java program. JVM launches the java program by invoking the main() method. Static is a keyword. The role of adding static before an 3 min read Article Tags : Java Practice Tags : Java Like