为什么java main类需要main()方法

我知道我们可以在没有main()方法的情况下成功编译和运行java程序,但为什么我们仍然需要java的主类中的main()方法?

每个Java应用程序都必须包含一个main方法,其签名如下所示:

public static void main(String[] args) 

如何获取主方法

Java语言中的主要方法类似于C和C ++中的main函数。 当Java解释器执行应用程序时(通过在应用程序的控制类上调用),它通过调用类的main方法开始。 然后main方法调用运行应用程序所需的所有其他方法。

如果您尝试在没有main方法的类上调用Java解释器,则解释器拒绝编译您的程序并显示类似于以下内容的错误消息:

  In class NoMain: void main(String argv[]) is not defined 

主方法的参数

从下面的代码片段中可以看出,main方法接受一个参数:String类型的元素数组。

  public static void main(String[] args) 

此数组是运行时系统将信息传递给应用程序的机制。 数组中的每个String称为命令行参数。 命令行参数允许用户在不重新编译的情况下影响应用程序的操作。 例如,排序程序可能允许用户使用此命令行参数指定数据按降序排序:

  -descending 

了解更多信息

http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/application/main.html

程序开始运行时,必须从某个地方开始执行。 那个地方叫做main

您可以在没有main方法的情况下编译任何Java类,但如果没有main()方法* ,则独立应用程序无法运行。

main方法是定义为在应用程序启动时调用的方法。 没有它,没有地方可以开始运行。

*嗯,你可以做到丑陋的黑客,但这是作弊

引用Java 语言规范 (JLS)“ A Java virtual machine starts execution by invoking the method main of some specified class, passing it a single argument, which is an array of strings

现在是执行开始的主要方法的典型定义

 public static void main(String[] args) 

public – 意义应该可以从任何地方访问

static – 在没有实例的情况下应该是静态访问的(因为JVM启动时,它没有包含main方法的类的实例,因此是静态的)。

void – 返回void。

所以main()方法在JVM中被“硬编码”,告诉它它是一个起点。

main()是应用程序的起点。 当应用程序启动时,此函数首先从代码中进行评估。 它负责运行您的应用程序。

  1. 要回答这个问题,我们需要了解出色的Java架构。
  2. 我们有Java源代码( .java文件)
  3. 编译器检查错误并生成字节代码作为.class文件
  4. 然后类加载器加载.class文件
  5. 之后JVM承担责任

    • a)JVM加载静态块
    • b)之后,JVM中的解释器想要读取代码。 在一堆代码中,开始阅读是JVM的问题?

    • 答:为了解决这个问题,我们给出了main关键字作为JVM在这个方法中开始执行的线索。

  6. 之后,Java将通过处理操作系统和硬件来产生输出
  7. 我的回答是否足够明确? 如果有任何疑问,请发表评论。