Java中的main方法可以返回一些东西吗?

vib*_*has 46 java

我最近接受了一次采访,他们问我核心Java中的两个问题.

问1.

我们可以编写一个java类:

public static int main(String[] args){
     System.out.println("Hello");
Run Code Online (Sandbox Code Playgroud)

我回答:没有.编译器不会编译它,因为它是预期的返回类型mainint,虽然我们可以重载它.

问题2:我无法回答的下一个问题.

编写一个程序,以便您的Java main方法可以返回一些东西.

即你怎么能public static void main([] args)回报什么?

任何人都可以帮我解答这个问题吗?

jos*_*chi 69

问1.我们可以编写一个java类:public static int main(String [] args){

是的,你可以但你不能运行那个Java类.

示例类:

class MainTest {

        public static int main(String[] args) {
                return 1;
        }
}
Run Code Online (Sandbox Code Playgroud)

尝试运行它时,您将收到一条错误消息:

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)
Run Code Online (Sandbox Code Playgroud)

问题2:下一个问题我无法回答.他要求编写一个程序,以便你的java main方法可以返回一些东西.

您可以使用System#exit(int)退出程序,并使用可由操作系统解释的特定退出代码.


Mar*_*all 35

通常,在main返回int(例如C和C++)的语言中,返回代码main成为进程的退出代码,命令解释程序和其他外部程序通常使用它来确定进程是否成功完成.要在Java中实现相同的效果,请使用System.exit方法(类似于标准C函数出口),如下所示:

public static void main(String[] args) {
  System.exit(42);
}
Run Code Online (Sandbox Code Playgroud)

引用上面链接的Java文档:

终止当前运行的Java虚拟机.该参数用作状态代码; 按照惯例,非零状态代码表示异常终止.


sec*_*ula 6

无法从Java main函数返回值.但是,程序可以返回状态代码.

尝试以下操作以在Java中以int状态退出 System.exit(45)

  • @seseformula:你的答案是以老师的风格写的,提供一些信息,希望学生能够跟进并了解更多信息.在StackOverflow上,目的是提供完整的答案,这不仅有助于原始提问者,而且**还为以后来的人提供完整的答案**.因此,您可能希望将来更多地充实这类答案. (6认同)