答:运行结果为 4 ,2
分析: 静态成员和静态代码块随类的加载而加载
执行Demo1.x这句: 没有类的实例对象进来,也new Demo1().x
执行Demo1.x这句: 没有类的实例对象进来,也
就没有什么对象初始化,因此只执行public static int x = 2;
static{
x = 3;
}
这两句,这时候x的值是3
执行new Demo1().x ,就在原来的基础上进行上进行对象的初始化语句,即执行{
x = 1;
}
这时候 x的值是1,两个x相加为4
执行下面的System.out.println( Demo1.x + new Demo1().x );
这时候,类还在运行,不需要加载,也就是说执行Demo1.x的时候,x的值还是1,执行了
new Demo1().x也是1,两个x的相加和为2
希望能帮到你
明白了吗 |