- public class Time {
- public static void main(String[] args) {
- Test T=new Test();
- }
- }
- class Test {
- static Test t = new Test();
- static int a = 3;
- {
- System.out.println(a);
- }
- }
复制代码
运行结果为
0
3
说明在主函数中Test T=new Test();
T对象初始化中,属性的t,和a的建立在在构造函数之前 ,先输出0代表先建立了属性t,后输出3代表建立t和a之后运行了构造函数
你所说的先执行构造函数 其实那是在建立t属性时执行另一个对象初始化
static Test t = new Test();
但是先输出0 ,代表在这个初始化中也是先建立了属性a,并默认初始化为0后才运行的构造函数
|