静态变量,方法的加载顺序
public class Parent {
//第零步,首先定义iz,iy两个变量,并初始化为0(因为是int类型,如果是对象则为null)
private static int iz = getNext(2); //第一步,因为有方法调用,所以转到方法,即第二步
private static int iy=99; //第三步
//静态初始化块
static //第四步
{
System.out.println("parent的静态初始化块");
System.out.println(iz); //这里因为第二步,iz=3
System.out.println(iy); //这里因为第三步,iy=4
}
public static int getNext(int base) //第二步,方法调用
{
System.out.println("parent的static int getNext(int base)被调用");
System.out.println(iy); //iy初始化为0
System.out.println(iz); //iz初始化也为0,这里就说明先走变量定义,对于int类型,初始化为0
return ++base;
}
public static void t() //这里没有执行,这就说明了,方法不调用,就不会被加载,所以如果第一步不调用getNext方法,第二步就不会执行,就会直接到第三步
{
System.out.println("parent的static void t被调用");
System.out.println(iz);
}
}