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 wit开发者_运维知识库h:
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)
One way of doing such thing is by modifying the values of args[i] for i smaller than args.length, at the interior of method main.
Example:
public class Test{
//
public static void main(String[] args){
args[0] = "a value";
args[1] = "another value";
}
}
From another class:
public class Other{
public static void main(String[] args){
String[] result={"",""};
Test.main(result);
System.out.println(result[0]);
System.out.println(result[1]);
}
}
Then the output is:
value
another value
Yes, we can write main method with a return type other than void. This simply means that we can overload our main method. Some examples are
public static void main(String ... x){ }
public static int main(String []args){ }
public static void main(string array[]){ }
But, note here that the compiler will only know
public static void main(String []args){ }
If above method is not present it will not compile.
Yes You can return of type void.But the value will go to JVM and no more code after return will be executed because The control will return to JVM which calls main()
精彩评论