java基础-main方法

技术分享  / 倒序浏览   ©

#楼主# 2020-2-11

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
概述
Java中的main方法,是一个java应用步伐的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java步伐那么必然就要有一个main方法。main方法的定义格式通常固定如下:
public static void main(String[] args){
}
我们可以在方法签名当中加上final关键字,也可以修改方法的参数的定义方式,但无论怎样,一个main方法必须要是static的,返回类型为void的,且是public的。为什么java中的main方法要这么计划和规定呢?下面我们就围绕以下三个问题来分析java中的main方法。
为什么main方法必须是static的?
关于static关键字我们知道的是,static关键字修饰的方法,可以不用通过创建一个类的实例,而是直接通过类名直接去访问。例如下面代码中调用methodA这样:
public class TestA{
    public static void methodA(){


    }
    public void methodB(){
       TestA.methodA();
    }
}
并且, 从内存角度来说static修饰的方法以及变量存储在虚拟机当中的方法区当中,而非堆内存当中。
那么,对于虚拟机来说也是一样的道理。main方法定义为static的,则对于虚拟机来说,在步伐启动之后并不需要创建一个实例,也就可以去调用这个main方法。
而如果main方法不定义为static的话,虚拟机就需要计划成去new一个包含main方法的类的实例,再去调用这个main方法。这个时间就会存在一个问题,若这个类存在不止一个构造方法,虚拟机是无法决定利用哪个构造方法去创建实例的。
固然,从我个人理解的角度,java虚拟机可以实现为解析非static的main方法,因为它可以规定自己利用默认的构造方法去初始化一个类,然后再去调用main方法即可,只是这相对而言会贫苦一些。从这个层面来讲我们也可以以为这是java虚拟机的一个约定。
为什么main方法必须是void的?
void是java的main方法的返回值,理解返回值应该从方法调用者的角度去理解,java的main方法的调用者是java虚拟机,而java虚拟机在启动java步伐时,只需要调用main方法,而不需要此方法返回任何的值,因此,main方法被计划为void的。
为什么main方法必须是public的?
Java计划了几个访问修饰符,包括:private,protected,public。 在Java中声明为public的任何方法或变量都可以从该类的外部访问。 而JVM访问main方法显然不是在类的内部访问,因此main方法需要定义为public的方法。
其他
从java诞生的历史配景来看,有的问题就会更好理解。写过c语言步伐的话,就会发现java的main方法定义事实上和c语言是十分相似的,而c语言的main方法就是需要用static关键字修饰。从这一角度也可以说Java这门语言在诞生之初本来就是故意计划成C步伐员熟悉的。
分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

岁月的我

新手猿

  • 主题

    3

  • 帖子

    3

  • 关注者

    0

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆