为什么java的main方法必须是静态的

为什么main方法是静态的(static)

正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。

因为C和C++同样有类似的main方法作为程序执行的入口。

如果main方法不声明为静态的,JVM就必须创建main类的实例,因为构造器可以被重载,JVM就没法确定调用哪个main方法。

静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果main方法是静态的,那么它就会被加载到JVM上下文中成为可执行的方法。

为什么main方法是公有的(public)

Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。

为什么main方法没有返回值(Void)

因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回

总结

main方法必须声明为public、static、void,否则JVM没法运行程序

如果JVM找不到main方法就抛出NoSuchMethodError:main异常,例如:如果你运行命令:java HelloWrold,JVM就会在HelloWorld.class文件中搜索public static void main (String[] args) 放法

main方式是程序的入口,程序执行的开始处。

main方法被一个特定的线程”main”运行,程序会一直运行直到main线程结束或者non-daemon线程终止。

当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于main线程

你可以声明main方法使用java1.5的可变参数的方式如:

publicstaticvoidmain(String... args)

除了static、void、和public,你可以使用final,synchronized、和strictfp修饰符在main方法的签名中,如:

publicstrictfpfinalsynchronizedstaticvoidmain(String[] args)

main方法在Java可以像其他方法一样被重载,但是JVM只会调用上面这种签名规范的main方法。

你可以使用throws子句在方法签名中,可以抛出任何checked和unchecked异常

静态初始化块在JVM调用main方法前被执行,它们在类被JVM加载到内存的时候就被执行了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,174评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,549评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,951评论 0 62
  • 心中的力量 只要心中有美,就会有精神力量。 我的心中是有美的。总有一些人在不断地激励着我走向成功,她们就是我的信仰...
    心若鲲鹏阅读 1,364评论 0 0
  • 花椒直播中,各种俊男靓女。你要什么类型的,它就有什么型的。最近小编在花椒直播中就发现一个萌妹子,萌得不要不要的...
    如花重名阅读 4,110评论 0 0

友情链接更多精彩内容