Java中的主要方法可以返回什么?
我最近经历了一次采访,他们在核心Java中问我两个问题。
Q 1。
我们可以写一个java类:
public static int main(String[] args){ System.out.println("Hello");
我回答:不。编译器不会编译它,因为它期望main
的返回types是int
,尽pipe我们可以重载它。
问题2:我无法回答的下一个问题。
编写一个程序,以便您的Java
main
方法可以返回一些东西。也就是说,你如何使
public static void main([] args)
返回的东西?
任何机构能帮我回答这个问题吗?
问题1:我们可以写一个java类:public static int main(String [] args){
是的,你可以但是你不能运行这个Java类。
示例类:
class MainTest { public static int main(String[] args) { return 1; } }
尝试运行时您将收到一条错误消息:
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)
问题2:下一个问题我无法回答。 他要求编写一个程序,以便你的java主要方法可以返回一些东西。
您可以使用System#exit(int)退出程序,并使用可由操作系统解释的特定退出码。
通常情况下,在main
函数返回int
语言(比如C和C ++)中, main
的返回码成为进程的退出码,通常由命令解释程序和其他外部程序用来确定进程是否成功完成。 为了在Java中达到相同的效果,使用System.exit方法(类似于标准的C函数出口 ),如下所示:
public static void main(String[] args) { System.exit(42); }
引用上面链接的Java文档:
终止当前运行的Java虚拟机。 这个论点是一个状态码。 按照惯例,非零状态码表示exception终止。
一个不能从Java主函数返回一个值。 程序可以返回一个状态码。
尝试以下操作以Java System.exit(45)
的int状态退出。
是的,我们可以用void之外的返回types来写主方法。 这只是意味着我们可以超载我们的主要方法。 一些例子是
-
public static void main(String ... x){ }
-
public static int main(String []args){ }
-
public static void main(string array[]){ }
但是,请注意,编译器只会知道
public static void main(String []args){ }
如果上述方法不存在,则不会编译。
做这种事情的一种方法是在method main的内部修改args [i]的值,使其小于args.length。
例:
public class Test{ // public static void main(String[] args){ args[0] = "a value"; args[1] = "another value"; } }
从另一个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]); } }
那么输出是:
值
另一个价值
是的你可以返回types的void.But值将去JVM和返回后不会再执行代码将被执行,因为控制将返回到JVM调用main()