关于main方法为什么要使用 public static void来修饰呢?

回眸只為那壹抹淺笑 提交于 2020-03-03 04:54:30

小伙伴在写Java文件时会不会产生这样子的疑问呢?为什么程序的入口一定要是public static void main(String args[])这个样子的呢?可以将publicstatic去掉吗?或者不加参数可以吗?为什么函数的返回的是void?有问题,当然得去实践才能得到答案,接下来的内容将为大家解决这些疑惑。

首先将public去掉看看运行效果

代码如下:
在这里插入图片描述
运行效果图:
在这里插入图片描述
从图片可以看到编译通过,但是运行不了,报错了,来分析下原因:
使用public修饰主函数的话,可以让其他类来访问这个函数,如果改用其他修饰(如protected,private),其他类访问不了该方法。因为Java的程序是通过Java的虚拟机JVM来调用的,属于外部调用,所以需要使用public修饰,否则虚拟机无法调用。所以public不能够去掉。

其次是去掉static,看看运行效果。

在这里插入图片描述
出现了同样的错误在这里插入图片描述
下面来分析一下原因:
首先因为Java是一门面向编程的语言,除了静态方法可以直接调用之外,其他方法的调用必须通过对象创建的实例来调用,对于主函数来说,是通过Java的虚拟机去调用的,属于外部调用,所以 需要static来声明该方法是静态方法,可以直接通过类名调用。

然后将void改为int,让其有返回值。

在这里插入图片描述
在这里插入图片描述
依旧报错,显示mian方法必须返回空类型值。同样的来分析一下原因。
首先,学过其他语言的人都知道,一个方法有返回值,那么在调用这个函数的时候会返回一个值,如果不对其返回的数进行操作,那么则会报错。在Java中,因为main函数是栈中最底层的函数,若出现返回值时,JVM无法对返回值进行上抛,如果有返回值难道抛给操作系统么?这显然是不可能的。看到这或许有人会疑问,为什么C语言的main函数可以有返回值,那是因为C语言在运行时是直接在操作系统运行的,若返回的是0,则说明程序是正常运行的。

现在来看看最后一个疑问,是关于main函数的参数的。

首先先将参数去掉,在这里插入图片描述
在这里插入图片描述
如图所示,报错了。再将参赛的类型改变一下,发现同样报错了。在这里插入图片描述

在这里插入图片描述
再改一下参数的名字在这里插入图片描述
在这里插入图片描述
此时发现可以运行了,由此可以得到,main方法中的参数,不能删除,也不能对其的类型进行更改,必须是String型。下面来分析下原因。
因为args[]提供了与虚拟机交互的一种途径和方法。能够为程序使用者在命令行状态下与程序交互提供了一种手段。这是Java语言所规定的,在平常运用中,可以向args[]这个字符串数组传递参数

下面来举个例子运用一下这个参数。
代码如下:

class Print{
    public static void main(String args[]){
        for(int i=0;i<args.length;i++){
            System.out.println(args[i]);
        }
    }
}

运行截图:
在这里插入图片描述

使用这些参数的方法是在编译完程序之后,在运行程序时,在后面加上所想传的参数,如果有多个参数,则用空格隔开,如上图所示。

至此,关于主函数的为什么一定要是**public static void main(String args[])**的原因已经讲解完了,如果大家还有什么不懂,欢迎大家一起交流

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!