沒有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