Why is main() in java void?

The main() method must indeed have a void return type. From the Java Language Specification on “Execution – Virtual Machine Start-Up” (§12.1.4):

The method main must be declared
public, static, and void. It must
accept a single argument that is an
array of strings.

It goes on to describe when a program exits in “Execution – Program Exit” (§12.8):

A program terminates all its activity
and exits when one of two things
happens:

  • All the threads that are not
    daemon threads terminate.
  • Some thread
    invokes the exit method of class
    Runtime or class System and the exit
    operation is not forbidden by the
    security manager.

In other words, the program may exit before or after the main method finishes; a return value from main would therefore be meaningless.
If you want the program to return a status code, call one of the following methods (note that all three methods never return normally):

Of the three, System.exit() is the conventional and most convenient way to terminate the JVM.

Leave a Comment