Can a main method in Java return something?

I went through an interview recently and they ask me two questions in core Java.

Q 1.

Can we write a java class with:

public static int main(String[] args){
     System.out.println("Hello");

I answered: No. The compiler won't compile it as it is expecting the return type of main to be int, though we can overload it.

Q 2: The next question I was unable to answer.

Write a program so that your Java main method could return something.

I.e. how can you make public static void main([] args) to return something?

Can any body help me to answer this?


Q 1. Can we write a java class with : public static int main(String[] args){

Yes, you can but you can't run that Java class.

Example class:

class MainTest {

        public static int main(String[] args) {
                return 1;
        }
}

You will receive an error message when trying to run it:

Error: Main method must return a value of type void in class MainTest, please 
define the main method as:
   public static void main(String[] args)

Q 2: Next question I unable to answer. He asked write a program so that your java main method could return something.

You can use System#exit(int) to quit your program with a specific exit code which can be interpreted by the operating system.


Typically, in languages where main returns int (such as C and C++) the return code of main becomes the exit code of the process, which is often used by command interpreters and other external programs to determine whether the process completed successfully. To achieve the same effect in Java, use the System.exit method (analogous to the standard C function exit), like so:

public static void main(String[] args) {
  System.exit(42);
}

Quoting the Java documentation linked above:

Terminates the currently running Java Virtual Machine. The argument serves as a status code; by convention, a nonzero status code indicates abnormal termination.


One can not return a value from a Java main function. Programs can however return a status code.

Try the following to exit with an int status in Java System.exit(45)