优先级从高到低 | 类别 | 是否执行只执行一次 |
---|
1 | 静态成员变量 | 只在类第一次被加载时执行一次 |
静态太代码块 |
2 | 普通成员变量 | 每次创建类的对象时都执行 |
普通代码快 |
3 | 构造方法 | 每次创建类的对象时都执行 |
**同优先级的按照出现顺序依次执行** |
import org.junit.Test;
public class FuckFilterTest {
@Test
public void shunxu() {
classB b = new classB();
System.out.println("-------------------");
classB b2 = new classB();
}
}
class classB {
public classB() {
System.out.println("构造方法");
}
private static classA s1 = new classA("静态成员变量1");
private classA f1 = new classA("普通成员变量1");
{
System.out.println("构造代码块1");
}
static {
System.out.println("静态块1");
}
{
System.out.println("构造代码块2");
}
private classA f2 = new classA("普通成员变量2");
private static classA s2 = new classA("静态成员变量2");
static {
System.out.println("静态块2");
}
}
class classA {
classA(String desc) {
System.out.println(desc);
}
}
静态成员变量1
静态块1
静态成员变量2
静态块2
普通成员变量1
构造代码块1
构造代码块2
普通成员变量2
普通成员变量1
构造代码块1
构造代码块2
普通成员变量2
构造方法