如果我可以在静态块中运行代码,为什么需要main()方法?

时间:2012-10-15 17:32:42

标签: java main conventions

我知道这个事实,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 个答案:

答案 0 :(得分:1)

据我所知,如果没有主要方法,您的应用程序将无法启动。甚至没有你在那里写的伎俩。你真的尝试过吗?

JLS (§8.7)说:

  

<强> 8.7。静态初始化程序

     

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

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


其他信息:

如果您没有创建主方法,则您的程序没有入口点。当有人写一个库(例如:Java Mail)时使用。图书馆本身不必开始。它是使用必须创建主方法的库的应用程序。

答案 1 :(得分:1)

main(String[] argv)允许您传入参数并返回值...使用静态块执行此操作不会。

答案 2 :(得分:1)

你可以在没有main()的情况下运行程序,但你不能在没有入口点的情况下运行exejar文件。
main方法是程序的默认入口点,你可以独立运行jar文件。
如果您不想制作需要独立发布的程序,则不需要它 - 例如,其他程序引用的jar或网站。
借助此main(),您可以传递参数

答案 3 :(得分:0)

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