-4

我知道这个事实 main() 方法是由技术定义的程序的起点。但是我们仍然可以在没有 main 方法的情况下完成整个事情而不会出现任何错误。我有这个代码

    public class WithoutMain {

        int x=10;
        int y=20;

        void show() {
            System.out.println(x);
            System.out.println(y);
        }

        static {
            WithoutMain t=new WithoutMain();
            t.show();
            System.exit(0);
        }

    }

我可以不用main方法写这个程序,那为什么一定要有main方法呢?

4

4 回答 4

1

据我所知,如果没有 main 方法,您的应用程序将无法启动。即使你在那里写的把戏也没有。你真的试过了吗?

JLS (§8.7)说:

8.7. 静态初始化器

类中声明的静态初始化程序在类初始化时执行(第 12.4.2 节)。与类变量的任何字段初始化器(第 8.3.2 节)一起,静态初始化器可用于初始化类的类变量。

由于没有入口点,因此没有加载单个类,这意味着具有静态初始化程序的类不会加载。所以静态初始化程序不会调用。


其他信息:

如果你不创建 main 方法,你的程序就没有入口点。这在有人编写库(例如:Java Mail)时使用。库本身不必启动。使用该库的应用程序必须创建一个 main 方法。

于 2012-10-15T17:35:13.980 回答
1

允许您传递参数并返回一个值......使用main(String[] argv)静态块做它不会。

于 2012-10-15T17:36:43.637 回答
1

您可以在没有入口点的情况下运行程序,main()但不能在没有入口点的情况下运行exejar归档。
main方法是程序的默认入口点,可以独立运行jar文件。
如果您不尝试生成需要独立启动的程序,则不需要它 - 例如,其他程序引用的 jar 或网站。
借助这个main(),您可以传递参数

于 2012-10-15T17:38:22.483 回答
0

在 Java 语言中,当您使用 Java 解释器执行一个类时,运行时系统首先调用该类的 main() 方法。然后 main() 方法调用运行应用程序所需的所有其他方法。

于 2012-10-15T17:35:56.393 回答