为什么main方法需要是静态的?

时间:2013-01-14 13:22:53

标签: java main

  

可能重复:
  Why is the Java main method static?

JAVA支持反射JAVA还需要主要方法为静态吗?

使用反射我们可以创建类的对象,甚至可以调用该类的方法,这样为什么JAVA需要main方法是静态的。

感谢您对此的评论。

5 个答案:

答案 0 :(得分:13)

唯一能够可靠回答的答案是“because the JLS says so”。引用:

  

方法main必须声明为publicstaticvoid。它必须指定一个形式参数(第8.4.1节),其声明的类型是String的数组。

答案 1 :(得分:2)

嗯,自Java 1.1以来已经引入了反思,因此最初的Java 1.0标准不能基于它们。他们可能只是为了引导程序而有一些类似反射的代码,而且当Java仍被称为Oak时,不知道它有多完整。

此外,这可能是继承自C ++并继承自C。虽然C ++也可以先构造一个应用程序对象并在其上调用virtual main(),但这可能看起来太复杂了,选择是使用简单的main,C开发人员很熟悉。

答案 2 :(得分:1)

因为运行程序时,运行时环境会查找签名为public static void main (String[] args)的方法。即使支持反射,运行时仍然需要首先调用类main方法。

答案 3 :(得分:0)

公开:为了让JVM获得对主要方法的访问权限,必须将其公开。

静态:因为它确实很复杂或者可能无法预见托管主方法的类的实例化标准,所以它必须是静态的,使JVM无需调用它从类中创建一个对象。

毕竟,在定义语言时需要明确的契约,没有这样的强制约束,JVM设计者可能会遇到麻烦。

答案 4 :(得分:0)

public static void main(String []args)中每个关键字的说明 1 public
    它必须是public,因为JVM不属于您定义class方法的main。因此,它不应该是private
2 static
JVM不会构造任何对象来调用main。主要不取决于class 3 void
main不会向JVM返回任何有用的信息。程序执行从main()开始,如果正常退出结束,则main中的最后一个语句。在批次之间发生。
4 main
它只是一个专有名词,用于表示该方法的重要性 5 Array of Strings。: 传递给main的args是一个或多个单词,它们可以是intfloatcharString。以上所有内容均可表示为Strings

希望它有帮助