What does `public static void main args` mean?
Asked Answered
F

7

7

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?

Futurity answered 26/3, 2015 at 11:9 Comment(1)
P
21

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

Pomfrey answered 9/4, 2015 at 19:24 Comment(1)
Plus 1 for the detailed explanation!Deduct
O
1

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.

Openminded answered 9/4, 2015 at 19:18 Comment(0)
T
1

In Java your main method must always be:

public static void main(String args[])
  1. The program execution starts with main() function, hence the main() function.

  2. It must be public so that it is accessible to the outside environment.

  3. The main() method is always static because, as you know that the program execution starts at main() method and there is no instance of the class containing main() method is initiated. Hence as the static method can run without need of any instance it is declared of static.

  4. Java is platform independent, hence you may try to compile the java file on one system and try to execute the class file on another. Each machines' bit architecture may be different hence the return type of the main function must always be main().

Hope this helps.

Thesis answered 17/11, 2015 at 6:44 Comment(0)
E
0

public --> Access specifier. Any other class can access this method.

static --> The method is bound to the class, not to an instance of the class.

void --> Return type. The method doesn't return anything.

main(String[] args) --> method name is main(). It takes an array of String's as argument. The String[] args are command line arguments.

Note: The main() method defined above is the entry point of a program, if you change the signature, then your program might not run.

Ethbinium answered 26/3, 2015 at 11:13 Comment(0)
I
0
  • Public = This method is visible to all other classes.

  • static = This method doesn't need an instance to be ran.

  • void = This method doesn't return anything.

  • main() = Main method (First method to run).

  • String[] = Array of strings.

  • args = Array name.

Incomprehension answered 26/3, 2015 at 11:15 Comment(0)
M
0

public is a keyword that allows code outside run it.

static is a keyword that doesn't need an instance to be run.

void is a type of data that the function returns.

main is a name of the function that will be ran.

string[] args is where arguments on running the programm will be put. It's an array of strings.

Marauding answered 18/6 at 13:39 Comment(0)
A
-1

Please go through this video link -> https://youtu.be/ggsRGcA8hnQVery for a clear and to the point explanation of public static void main(String args[]) method.

Audy answered 27/6, 2022 at 14:51 Comment(2)
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.Bruiser
It could be very useful to give a brief answer before referencing the link so that anyone visiting the link could be visiting for a more broader & detail explanation.Khalil

© 2022 - 2024 — McMap. All rights reserved.