/**
*
Person p = new Person();
1,加载Person.class文件。
2,执行Person类中的静态代码块对Person类进行初始化。
3,在堆内存开辟空间分配内存地址,并对对象中的属性进行默认初始化和构造代码块初始化。
注:(构造代码块的初始化跟对象中的默认属性是一致的,谁在前,就先实例化谁。)
如:下面则先运行int x=4;
在运行构造代码块,之后再执行int y=5;
=======================================
int x = 4;
{
System.out.println("d");
}
int y=5;
=======================================
4,与之对应的构造函数初始化。
5,将对象的内存地址值赋值给p。
*
*/
public class StaticCode {
int x = 4;
{
// System.out.println("d" + age);//在这里如果写上成员变量age,则会编译失败,不管age属性是私有还是共有。
System.out.println("d");
}
static {
System.out.println("a");
}
private int age=2;
StaticCode(int x) {
System.out.println("g");
}
StaticCode() {
System.out.println("f");
}
void show() {
System.out.println("e");
}
}
class StaticCodeDemo {
static {
System.out.println("b");
}
//此方法执行的输出的值依次是:b、a、d、f、e、d、g、e
public static void main(String[] args) {
new StaticCode().show();
new StaticCode(4).show();
}
}