Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does `public static void main args` mean?

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?

like image 394
Nick Nicholas Avatar asked Mar 26 '15 11:03

Nick Nicholas


People also ask

What is public static void main args?

public static void main(String[] args) Java main method is the entry point of any java program. Its syntax is always public static void main(String[] args) . You can only change the name of String array argument, for example you can change args to myStringArgs .

What does public static void main stand for?

Public:- it is an access specifier that means it will be accessed by publically. Static:- it is access modifier that means when the java program is load then it will create the space in memory automatically. Void:- it is a return type that is it does not return any value. main():- it is a method or a function name.

What does public static void main String [] args do?

Java :public static void main(String[] args) The main() method is a special method in Java Programming that serves as the externally exposed entrance point by which a Java program can be run.

What happens if we give static public void main?

Nothing will happen ! It was nothing the program compiles and runs properly.


2 Answers

Here 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().

like image 177
Sai Upadhyayula Avatar answered Sep 28 '22 22:09

Sai Upadhyayula


According to the Java language specification, a Java program's execution starts from main() method. A main() method should follow the specific syntax, it can be explained as:

public static void main(String[] args)

public - Access specifier, shows that main() is accessible to all other classes.

void - return type, main() returns nothing.

String args[] - arguments to the main() method, which should an array of type string.

static - Access modifier. A main method should always be static, because the `main()' method can be called without creating an instance of the class.

Let us assume, we are executing a Helloworld java program.

While executing the program, we use the command

java Helloworld.

Internally, this command is converted into

Helloworld.main()

By making main() method static, JVM calls the main() method without creating an object first.

like image 32
Giri Avatar answered Sep 28 '22 22:09

Giri