㈠ java中main方法中的static函數不管是不是在最後,都會最先執行嗎
你應該知道,main方法是程序執行時的入口,但是因為有了static代碼段,main方法可能不會執行到。
main之所以為static的,在程序載入的時候就會分配內存,但是如果一個程序中還有其他的static方法,只能在static修飾的方法中調用。對於static代碼段,也是程序執行時開始載入。
我在涉及多線程應用遇到過這個問題,例如:
public class Test {
static {
initial(); // 調用靜態方法initial()
}
private static void initial() {
while(true) { // 這是在無限循環
System.out.println("some strings.");
break;
}
}
public static void main(String[] args) {
System.out.println("This is main method");
}
}
如果你執行程序的話,肯定先輸出"some strings.",後輸出"This is main method.",。
這說明,程序一開始載入的時候,首先載入了靜態的static的代碼段的程序,而且,無論static代碼段放在什麼位置,都會首先載入的。
其實,說main方法時入口,一般把一些static代碼段視為初始化代碼段,而不是應用程序(進入main方法)執行過程中,但應該知道,static代碼段可以調用static修飾的方法,從而使得對應的static修飾的方法先執行了初始化。