main方法为何为public static void

本文详细解析了Java中主方法(main方法)为何被定义为public static void的形式,并解释了其参数String[] args的作用。从历史传统和技术实现的角度,阐述了这种定义方式的原因。

main方法为何为public static void

参考内容来自stackoverflow

链接如下

笔者综合了stackoverflow上的不少回答,总结如下:

关于main方法的签名在《Oracle Java Language Specification》的第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. This method can be declared as either. —— O.J.L.S section 12.1.4

在JDK源码中我们也能发现这样的规定

FROM : (jdk-src\j2se\src\share\bin\java.c)
/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main","([Ljava/lang/String;)V");

我们可以清晰的看到main方法签名。

对于为何这样定义,Stackoverflow的解释为:

  • public的原因为让外部可以访问到它;
  • static是因为调用这个程序的入口方法无形实例化所在类的对象;
  • void是因为让入口方法返回值是没有意义的,因为程序很有可能在到达方法尾部之前结束如调用System.exit(int status);
  • String[] args是用来接收启动程序时传入的参数
  • 起名为“main”是因为在过去大量使用C的日子里,方法名称是很有讲究的。main在C语言中就是入口函数的名称,Java沿袭这个传统。

综上所述,main方法长这个样子,可以说就是一种惯例,一种规定,一种convention

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值