㈠ 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修饰的方法先执行了初始化。