没有main函数时的Java程序的执行

Java初学者大都是从main函数在控制台打印HelloWorld来开始Java学习的, 其形式为:public static void main(String[ ] arg)。

首先,main方法是JVM(java虚拟机)自动调用,JVM调用main方法的位置自然不会在某个类中、或某个包中,因此只有当main方法在公有级别上时,才对JVM可见,所以mian方法需要public修饰,同理,main方法所在的类也需要public修饰符。

其次,由于main方法是所有程序的入口,也就是main被调用时没有任何对象创建,不通过对象调用某一方法,只有将该方法定义为静态方法,所以main方法是一个静态方法,既需要static修饰。

最后,JVM对于java程序已经是最底层,由它调用的方法的返回值已经没有任何地方可去,因此,main方法返回值为空,既需用void修饰。

因此Java的main函数只能写作这样的形式:public static void main(String[ ] arg)。

但是Java程序不一定需要main函数,那么不带main函数的Java代码如是怎样定义的呢。

只需要将main函数替换成static定义的代码片段即可:

static{

//your code here

}

需要注意的是,仅仅这么定义,在控制台运行时候仍旧会报错(编译可以通过),需要在代码中加入System.exit(0),即:

static{

//your code here
System.exit(0);

}

这样就能成功运行了^_^

举例:


class test
{
    static
    {
        int a=0;
        System.out.println(a);
        System.exit(0);
   }
} 

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

转自:https://blog.csdn.net/esonjohn/article/details/64444117
           https://blog.csdn.net/dolan/article/details/1734528

你可能感兴趣的:(Java)