1、Java类中静态语句块、构造语句块以及构造函数的执行顺序
public class Test {
public Test() {
System.out.println("A");
}
static{
System.out.println("C");
}
{
System.out.println("B");
}
public static void main(String[] args) {
new Test();
}
}
该程序输出的结果为:CBA
由此可见他们三者的执行顺序如下:静态语句块 -> 构造语句块 -> 构造函数
2、父类和之类构造方法的调用顺序问题
class People {
String name;
public People() {
System.out.print(1);
}
public People(String name) {
System.out.print(2);
this.name = name;
}
}
class Child extends People {
People father;
public Child(String name) {
System.out.print(3);
this.name = name;
father = new People(name + ":F");
}
public Child() {
System.out.print(4);
}
}
new Child("William");输出结果为:132
由此可见:默认调用父类无参的构造函数