明确了类初始化的顺序就能明白这是怎么执行的了
Day06 d = new Day06(1)
这一句整个过程如下
1,首先加载Day06的类,同时加载静态成员和静态代码块,这时i=2,输出 静态代码块...i=2,
2,对对象进行默认初始化,这时j=9
3,对对象进行显示初始化
4,对对象进行构造代码块初始化,这时输出 构造代码块...i=2,j=9
5,调用带参数的构造函
6,调用无参数的构造函数 输出 无参的构造函数...j=9
7,回到带参数的构造函数中 输出 有参的构造函数...i=2,j=9
int a = Day06.i;
将i值付给a, a=2
输出 2
输出 ----
new Day06(3);
除了不加载静态代码块剩下的与第一句都是相同的
|
|