public static void main(String[] args) - 为啥它实际上是静态的? [复制]

Posted

技术标签:

【中文标题】public static void main(String[] args) - 为啥它实际上是静态的? [复制]【英文标题】:public static void main(String[] args) - why is it actually static? [duplicate]public static void main(String[] args) - 为什么它实际上是静态的? [复制] 【发布时间】:2012-08-27 12:30:29 【问题描述】:

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

main 方法是静态的原因是什么?为什么不只是public void main(String[] args)?我想我理解静态的含义,但我认为没有理由在这里。谢谢。

【问题讨论】:

【参考方案1】:

我们将java中的main方法声明为:public static void main(String args[])

static : main 是类的入口点。在java中,一切都写在一个类中。现在当你在命令提示符下运行java时,loader会加载类,jvm会搜索main方法进入类。因此将 main() 设置为静态,将使 jvm 直接访问它而不创建实例。

如果 main 方法未声明为静态,则 JVM 必须创建 main 类的实例,并且由于构造函数可以重载并且可以有参数,那么 JVM 在 Java 中查找 main 方法将没有任何确定且一致的方法。

【讨论】:

【参考方案2】:

请记住,java 中的一切都是一个类,并且要让 JVM 直接访问 main 方法而不创建包含在其中的对象,它必须是静态的。

static : main 是类的入口点。在java中,所有东西都写在一个类中。现在,当您在命令提示符下运行 java filename 时,loader 将加载该类,jvm 将搜索 main 方法以进入该类。所以将 main() 设为静态,会让 jvm 直接通过 classname.main() 访问它

Reference here

这也是这个问题的好资源,located here

【讨论】:

由于 main 方法是静态的,JVM 可以在不创建任何包含 main 方法的类实例的情况下调用它。如果 main 方法没有声明为静态,那么 JVM 必须创建 main 类的实例,并且由于构造函数可以重载并且可以有参数,那么 JVM 就没有任何确定的方法可以在 Java 中找到 main 方法。 答案中主要指出了这一点。这是 3 岁。【参考方案3】:

根据我有限的 Java 知识,main() 是静态的,因为当启动 Java 应用程序时,它不会创建任何类实例。需要有一个可以在不创建实例的情况下调用的函数,这正是 static 关键字的作用。

【讨论】:

以上是关于public static void main(String[] args) - 为啥它实际上是静态的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为什么 main 方法是 public static void ?

为什么main方法是public static void?

关于public static void main(String[] args)方法?

为什么Java的main方法必须是public static void?

将 main 方法定义为:public static void main(String[] args)的理由

public static void main(string[] args)解释