JAVA main函数一定是这个格式吗

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:41:51
public static void main(String [] args)

我们运行java程序使用的是java虚拟机。虚拟机启动之后,会在.class文件里面去找一个名为main的函数,然后运行它,我们的程序便运行了。

那么你想一想,这个main函数是在它所属的类的实例产生之前就被调用的,所以它只能是static的。另外,这个main函数是虚拟机来调用的,即是外部代码来调用的,所以它只能是public的。

然后,你也可以把这个函数声明为int返回值。但是虚拟机并不需要返回状态,所以它只会找返回值为void的main,如果你定义为int,则不会当作主函数被调用。

最后,函数参数是String类型的一个数组,这个数组也就是运行时的参数。args是型参名,可以随意。

是的,这个是规定的,其实我们开始学就要记住这句的

是的。
main函数(即主函数)是java程序的入口,当你编译程序的时候,jvm(虚拟机)就会去你编写的程序中查找这个方法,如果有,在没有语法错误的情况下就可以编译通过,如果没有,就会报错(找不到主函数),格式也必须是这个格式,这是java规定的语法。

nicky_zs 讲的才是你需要得答案,这才是精华

再补充一下,这里仅仅简单的描述一下,并非绝对真实.虚拟机启动,会有一个叫"类加载器"的东西,ClassLoader,在代码中你自己也可以扩展此类自己加载类.即你编译好的.class文件

当你使用JAVA 命令(工具只是帮你执行了这个命令所以你看到的只是一个"运行")来运行的时候,类加载会加载你的类,并且使用反射机制得到"名字为main,参数为String[]类型"的方法(比如Method mainMethod = YourClass.getDeclaredMethod("Main")),然后调用方法的invoke方法(mainMethod.invoke(args))来执行. 那么,如果你没有定义main方法,你会发现报找不到main方法的异常.

所以,给我们的感觉就是main方法就是程序运行的方法.
那么,如果你可以自己扩展ClassLoader来加载一个类,你也