java中main 方法为什么必须要是 public static void 声明(个人反思理解)

java中main 方法为什么必须要是 public static void 声明(个人反思理解)

在资料中找到的是:
	1. 正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。
	2. 因为C和C++同样有类似的main方法作为程序执行的入口。
	3. 如果main方法不声明为静态的,JVM就必须创建main类的实例,因为构造器可以被重载,JVM就没法确定调用哪个main方法。
	4. 静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果main方法是静态的,那么它就会被加载到JVM上下文中成为可执行的方法。
对于标准的回答,个人的理解是:
1. 对于1跟4可以被理解为是main作为静态方法被调用是不需要创建对象,毕竟在java中类方法都是依赖于类来实现的,相当于被包在了类中来实现,而static方法虽然写在类中,却可以不去创建类的实例而直接被实现,况且如果jvm需要创建实例去使用main方法,那由谁来创建这个实例同样又是一个问题,这样就套娃了。所以需要设置static。

2. 对于第二点,个人感觉类似于python中的 
	if __name__ == __main__
这个声明,即某个类中的main方法只会在单独解释该单类文件时才会被调用,而在作为一个类被引用时是不会被调用的

3. 之所以需要声明为public,是因为java中jvm对于方法的调用有明确的分级,将main方法设定为public能更方便被jvm调用。

4. 同时,因为main方法形参是 String[] args,那么如果不声明为静态,那么jvm需要创建main类的实例,而因为java构造器可以重载,这样不确定args的数量(参数个数可以为0-n)也就会让jvm不知道调用哪一个构造器了。所以需要声明为static。

5. main方法本来就作为了程序的入口,相当于告诉了这个方法就是最终逻辑,所以也就不存在需要传递参数的情况,那么就没必要需要返回值,设定为void也就很合理。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值