1.本类的成员顺序.
public class Fu {// 1.静态 // 方法static {System.out.println(" 静态方法来喽");}public static int x = orderPrint(1);{System.out.println("构造代码块来喽");}public static int y = orderPrint(2);static {System.out.println(" 静态方法又来喽");}public Fu(){System.out.println("无参构造方法来喽");}public static int orderPrint(int i){switch (i){case 1 :System.out.println("静态变量1.位置最前方");break;case 2 :System.out.println("静态变量2.位置稍后");break;}return i ;}{System.out.println("构造代码块又来喽");}}
从输出结果来看
显然,先输出的是静态成员,静态方法与静态变量穿插调用可以看出,这里的顺序只和关键字有关,与变量或者是方法,无关.
2.继承
public class Zi extends Fu{static {System.out.println(" ---------------儿子的静态方法来喽");}public static int x = orderPrint(1);{System.out.println("---------------儿子的构造代码块来喽");}public static int y = orderPrint(2);static {System.out.println(" ---------------儿子的静态方法又来喽");}public Zi(){System.out.println("---------------儿子的无参构造方法来喽");}public static int orderPrint(int i){switch (i){case 1 :System.out.println("---------------儿子的静态变量1.位置最前方");break;case 2 :System.out.println("---------------儿子的静态变量2.位置稍后");break;}return i ;}{System.out.println("---------------儿子的构造代码块又来喽");}
}
还是这样,不过是先按代码块,再按父子关系进行执行