Java Main方法为什么必须是 public static void?

发布时间:2026/6/12 20:02:18

Java Main方法为什么必须是 public static void? 为什么必须是 public static void前言正文一、为什么必须是 public二、为什么必须是 static三、为什么返回值必须是 void四、为什么方法名必须固定为 main五、为什么入参必须是 String[] 字符串数组总结如下前言下午在这坐班跟一老哥聊天给我笑死了在这聊技术我问他什么是java他说是编程语言我说有啥区别呢他就不知道了不过还能编一编我随后又问为什么java写代码的时候为什么必须用 public static void他就懵逼了哈哈哈其实所有Java程序员都写过public static void main(String[] args)但是90%的人只会死记硬背根本不知道为什么这一串单词几乎不能改动。正文一、为什么必须是 public核心原因JVM对于我们自己写的Java代码来说属于外部程序不在项目的包、类体系内。Java有四种访问权限权限范围从小到大依次是private仅本类可见default同包可见protected同包子类可见public全局所有位置可见如果main方法不设置为public外部的JVM就没有访问权限找不到程序的入口方法直接报错无法启动程序。简单来说public就是专门给JVM开启的访问权限是程序启动的必备钥匙。二、为什么必须是 static这是最核心的关键点程序刚刚启动的瞬间我们编写的类仅仅完成了加载没有创建任何实例对象。普通的实例方法必须通过new创建对象之后才能调用。但main是程序的入口是最先执行的方法根本没有前置代码帮我们创建对象。而static静态方法的特性就是依托类本身存在不需要实例对象类加载完成后就可以直接通过类名调用。只有加上staticJVM才能在无对象的初始状态下成功调用main方法启动程序。三、为什么返回值必须是 void对比C/C就能轻松理解C语言的main方法有int返回值主要是给操作系统传递程序退出状态标识程序正常结束还是异常崩溃。但Java的程序退出机制完全由JVM全权管控和main方法的返回值没有任何关系。JVM退出只看两个条件一是所有非守护线程全部执行完毕二是代码调用了exit退出方法。这就导致main方法的返回值没有任何接收方、没有任何实际作用无论返回什么都不会影响程序运行和退出状态所以Java直接规定main方法统一使用void无返回值。四、为什么方法名必须固定为 main这是JVM的硬性固定规则属于语法约定。JVM启动程序时只会主动检索名为main的方法作为唯一入口。修改成Main、MAIN、main1等任何名称都会导致JVM找不到程序入口程序无法启动。五、为什么入参必须是 String[] 字符串数组Java程序支持终端命令行传参启动我们在命令行执行java命令运行程序时后面可以携带多个自定义参数。所有命令行传递的参数本质都是字符串格式且参数个数不固定可能是0个、1个甚至多个。为了兼容不定数量的字符串参数main方法的入参统一设置为String[]字符串数组用来批量接收所有命令行参数。总结如下1、public对外开放访问权限让外部JVM可以识别、调用程序入口2、static无需实例化对象类加载后JVM可直接调用适配程序启动初始状态3、voidJava程序退出由JVM线程状态决定main方法返回值无实际意义4、mainJVM约定的唯一程序入口方法名不可修改5、String[]用于接收命令行传递的不定数量的字符串参数。

相关新闻