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 ?
关于public static void main(String[] args)方法?
为什么Java的main方法必须是public static void?