Java程序的执行流程:
.java文件经过编译形成 .class文件,然后在不同的系统平台上进行运行。
流程:
①首先加载class文件,在栈内存中创建类对象,并对类中由static关键字声明的数据进行初始化并且只进行初始化一次
② new 类名() 在Java堆内存中分配空间
③执行所有方法外定义的变量的初始化
④执行构造器(不论变量放在哪儿,都会先于任意一个方法的执行前执行,包括构造方法,而构造方法是一个类必须会执行的方法,不需要显示的进行调用。同时,不论变量在哪儿分布,只要在方法外部,就一定先于方法初始化。)
总体来说,调用构造方法的时候的执行顺序:执行顺序为:静态块,静态属性->非静态块,属性->构造器。
例子:
public class Person {
public Person(int id) {
System.out.println("person(" + id + ")");
}
}
class Build {
/*静态块*/
static{
System.out.println("this is static block!");
}
/*非静态块*/
{
System.out.println("this is non-static block!");
}
Person p1 = new Person(1);//------------1-----------
public Build() {
System.out.println("this is build's block!");
Person p2 = new Person(2);
}
Person p3 = new Person(3);
public static void main(String[] args) {
Build b = new Build();
}
}
this is static block!
this is non-static block!
person(1)
person(3)
this is build's block!
person(2)