【问题标题】:When is java main method called?什么时候调用java main 方法?
【发布时间】:2012-05-16 15:55:57
【问题描述】:
  1. 我有一个类 (1) 有一些构造函数(arg 和没有 args)。 在另一个 class(2) 中,使用 new constructor() 创建了 Class 1 的对象。那么在这种情况下会调用 main 方法吗?

  2. 理想情况下,什么时候在任何类中调用 main 方法?

【问题讨论】:

  • 注意:main 是静态的,不需要对象的new

标签: java main


【解决方案1】:

任何类都可以有一个 main 方法。例如,您的 Class(1) 和 Class(2) 类都可以有一个 main 方法,但在您的程序运行时只会调用一次。

当您运行程序时,例如 java class1 - 您告诉 Java 您希望使用 Class(1) 的 main 方法启动程序。这可能会令人困惑,因为您认为 Java 会执行它找到的每一个主要方法,但事实并非如此。一旦 Java 在您指定的类中找到并运行了 main 方法,它将忽略它以后可能找到的所有 main() 方法,因为它已经为您的程序执行了一个 main 方法。

您可以将 main() 视为通向程序的门,一旦进入,计算机就不会再次尝试进入,它已经在程序中!希望对您有所帮助。

【讨论】:

  • 不错。我喜欢门的概念。
  • 谢谢——这是我唯一能理解的方式——有趣的是,人们忘记了几年前这些概念是多么困难!很高兴看到这么多人在这里互相帮助。
【解决方案2】:

main 是一个静态方法,是程序的入口点,在程序启动时被调用一次(除非你显式调用它),而不是为每个对象初始化。

【讨论】:

  • 如果每个类都有一个main方法,那么main方法什么时候执行?在对象创建期间?
【解决方案3】:

main 方法只在两种情况下被调用:

  1. 由 Java 虚拟机启动应用程序
  2. 通过另一种方法(可能在另一个类中)调用 main 方法,虽然这是正确的 Java,但不是最佳实践

main 不会在类的实例化时自动调用 - 作为静态方法,它的封闭类甚至不需要实例化即可调用。

另一方面,构造方法在创建类时被调用

【讨论】:

    【解决方案4】:

    当你运行你的 class2(应该包含main 方法)时,main 方法将被调用。

    【讨论】:

      【解决方案5】:

      您的main 方法将被不在您的程序中的东西调用,并且将被调用一次以启动您的程序。查看here 了解更多信息。至于你应该把它放在哪里,它的位置并没有真正的限制。

      【讨论】:

        猜你喜欢
        • 2018-01-01
        • 2011-09-19
        • 2011-07-21
        • 1970-01-01
        • 2015-07-13
        • 2012-11-30
        • 1970-01-01
        相关资源
        最近更新 更多