**
测试代码,创建一个类,然后去实例化。
**
public class Test {
public static String a = "a";
private String b = "b";
{
System.out.println("no static");
System.out.println("b:" + b);
}
static {
System.out.println("static");
System.out.println("a:"+a);
}
public Test(){
this("un");
System.out.println("Test():"+this.b);
}
public Test(String val){
this.b = val;
System.out.println("Test(val):"+this.b);
}
public static void main(String[] args) {
new Test();
}
}
**
输出结果:
**
static
a:a
no static
b:b
Test(val):un
Test():un
**
结果分析:
**
1.在实例化对象时,先对静态变量分配内存空间并初始化,然后执行静态块。
2.初始化所有的非静态变量为默认值,然后再显示初始化,即执行 b = “b”。
3.初始化完非静态变量执行非静态方法块。
4.执行构造函数,在默认构造函数中调用了带参数的构造函数。