Why main method required in java

Why the signature of main method be always public static void main(String args[])?
What actually happens when we write >> java <classname> <argument1> ?
Who is Participating?
jimmackConnect With a Mentor Commented:
>> What actually happens when we write >> java <classname> <argument1> ?

1) The Java Virtual Machine is started ("java") and it attempts to load the specified class ("<classname>").
2) When the class is successfully loaded, the JVM looks for the main() method entry-point and passes the remaining command line parameters ("<argument1> ...") to this method as an array of Strings.

That's why if you make a typo on the command line, step 1) responds with "NoClassDefFoundError".
If main() is not defined correctly, then step 2) responds with "NoSuchMethodError: main"

Just for information: The main method signature should *always* be the same.  The Java Virtual Machine specifically looks for this method, so if you were to write:

public static void main()

It wouldn't run.

Also, because Java is fairly relaxed about array definitions, you can also use:

public static void main(String[] args)

(This is the preferred way to define an array - ie. with the [] following the class/type rather than the variable - but both will work OK)
Its public static void main for the following reasons.
public since we need to access it outside out class
static since we dont create an instance of the class for executing main
void is the return type (since we are calling from outside return value serves almost no purpose.
string args[] is for storing the arguments as an array

when u call the java class with arguments the arguments are stored in the array and you can access them later in your code.
All Courses

From novice to tech pro — start learning today.