I am not sure what this means, whenever before you write a code, people say this
public static void main(String[] args) {
What does that mean?
See Question&Answers more detail:osI am not sure what this means, whenever before you write a code, people say this
public static void main(String[] args) {
What does that mean?
See Question&Answers more detail:osHere is a little bit detailed explanation on why main method is declared as
public static void main(String[] args)
Main method is the entry point of a Java program for the Java Virtual Machine(JVM). Let's say we have a class called Sample
class Sample {
static void fun()
{
System.out.println("Hello");
}
}
class Test {
public static void main(String[] args)
{
Sample.fun();
}
}
This program will be executed after compilation as java Test
. The java
command will start the JVM and it will load our Test.java
class into the memory. As main is the entry point for our program, JVM will search for main method which is declared as public
, static
and void
.
Why main must be declared public?
main()
must be declared public
because as we know it is invoked by JVM whenever the program execution starts and JVM does not belong to our program package.
In order to access main outside the package we have to declare it as public
. If we declare it as anything other than public
it shows a Run time Error
but not Compilation time error
.
Why main must be declared static?
main()
must be declared as static because JVM does not know how to create an object of a class, so it needs a standard way to access the main method which is possible by declaring main()
as static
.
If a method is declared as static
then we can call that method outside the class without creating an object using the syntax ClassName.methodName();
.
So in this way JVM can call our main method as <ClassName>.<Main-Method>
Why main must be declared void?
main()
must be declared void because JVM is not expecting any value from main()
. So,it must be declared as void
.
If other return type is provided,the it is a RunTimeError
i.e., NoSuchMethodFoundError
.
Why main must have String Array Arguments?
main(
) must have String arguments as arrays because JVM calls main method by passing command line argument. As they are stored in string array object it is passed as an argument to main()
.