学了java之后我们都知道,java中的main函数就像java函数的入口,比如说下面这段非常简单的代码。

public class Demo1 {
    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}

不难得出,这段代码运行的结果是

Java有什么项目是不用gui的 java不用main方法_System


那么这时候我们也许会想,如果不用main函数怎么才能让这段代码运行呢?通过我在网络中的查询,我找到了一个不用main函数便可以执行代码的方法 

上述的博客中,我们可以知道static块可以在没有main函数的情况下单独运行。博主所用得是jdk1.8,所以这里用jdk1.8测试一下。

但是当我测试的时候,又出现了如下错误:

Java有什么项目是不用gui的 java不用main方法_java_02


而错误的原因如下:

不同JDK版本会有不同的结果,笔者使用jdk1.4版本可以正确得到以上结果,使用jdk1.8版本编译成功但是运行报错,所以读者应该慎重选择jdk版本。更多的版本测试结果请在评论区交流~

 

但是为了弄清楚static静态块之前可以单独运行的原因,写了如下代码

下面展示一些 内联代码片

public class Demo2 {
        //静态代码块
        static {
            System.out.println("我是静态代码快,我被执行了!");
            System.exit(0);//退出程序
        }
        public static void main(String[] args) {
            System.out.println("我是main函数,我要执行了");
        }

}

代码运行结果如下:

Java有什么项目是不用gui的 java不用main方法_System_03


下面展示一些 内联代码片

public class Demo2 {
        //静态代码块
        static {
            System.out.println("我是静态代码快,我被执行了!");
        }
        public static void main(String[] args) {
            System.out.println("我是main函数,我要执行了");
        }
}

代码运行结果如下:

Java有什么项目是不用gui的 java不用main方法_Java有什么项目是不用gui的_04


由上面两段代码可以得出:static语句块会在加载类的时候加载,它在main函数之前运行。 当static语句块运行完毕后,会寻找main函数,如果没有找到,就会抛出异常。但是在以上的代码中,static语句块执行后,我们终止程序的运行,所以异常就不会被抛出。