标题: 这个问题谁帮我看看,好迷惑 [打印本页] 作者: Q932036165 时间: 2015-12-11 22:51 标题: 这个问题谁帮我看看,好迷惑 public class A {
//静态块
static {
A a = new A();
i = 10;
}
public static int i;
public int j;
public A() {
System.out.println(A.i);
System.out.println(j);
}
public static void main(String[] args) {
A a = new A();
}
}作者: wwwjpm@126.com 时间: 2015-12-11 22:58
会打印2次作者: sky123 时间: 2015-12-11 22:59
首先,main方法执行前
static {
A a = new A();
i = 10;
}
随着A类的加载而加载
A a = new A();执行,
那么就会执行
public A() {
System.out.println(A.i);
System.out.println(j);
}
而成员变量
public static int i;
public int j;
系统默认值为0;
所以 打印
0
0
然后
执行i =10;
随后,main方法执行,
A a = new A();
所以又执行一次
public A() {
System.out.println(A.i);
System.out.println(j);
}
这时候打印
1
0
所以结果为
0
0
1
0作者: sky123 时间: 2015-12-11 23:00
上边打错了结果是
0
0
10
0作者: Q932036165 时间: 2015-12-11 23:54