class Father {
static int x, y, z;
static {
System.out.println("父类静态代码块");
int x = 9;
x++;
y++;
z++;
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("z=" + z);
}
static {
x--;
}
{
x--;
y--;
System.out.println("y=" + y);
System.out.println("父类非静态代码块");
}
public Father() {
System.out.println("父类无参构造器");
method();
}
public void method() {
System.out.println("Father的method");
z = ++y + x--;
System.out.println("z=" + z);
}
}
public class Son extends Father {
static int a, b, c;
static {
y = x++ + ++x;
System.out.println("y=" + y);
System.out.println("子类静态代码块");
a++;
}
{
x++;
b--;
System.out.println("子类非静态代码块");
}
public Son() {
x++;
System.out.println("子类无参构造器");
super.method();
}
public void method() {
System.out.println("Father的method");
c = ++y + x-- + a++ + b++ + z;
System.out.println("c=" + c);
}
public static void main(String[] args) {
System.out.println("main方法开始");
System.out.println("x=" + x);
System.out.println("************************");
new Son();
System.out.println("main方法结束前输出");
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("z=" + z);
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
System.out.println("main方法结束");
}
}
1、类加载时先加载父类。
2、静态代码块在类的加载时进行执行。
3、非静态代码块在构造器之前执行。