本类中静态资源的加载顺序
-->按顺序加载
下面给出一个例子
class A{
static A a=new A();
static int a=10;
static int b;
public A(){
a++;
b++;
}
}
//测试类
public class Test{
System.out.println(A.a);
System.out.println(A.b);
}
结果是:
10
1
这是为什么呢?答案看完就知道了。
再来看下面代码
class A{
static int a=10;
static int b;
static A a=new A();
public A(){
a++;
b++;
}
}
//测试类
public class Test{
System.out.println(A.a);
System.out.println(A.b);
}
结果是:
11
1
可能还有点不懂,那么测试一下,在构造方法的第一行分别输出 a 和 b 的值
- 第一个代码块的构造方法输出的是 0 0
- 第二个代码块的构造方法输出的是 10 0
这次是不是懂了,就是静态资源是按顺序加载的, 在第一行创建静态对象时用到了没有被初始化的类变量,默认值都是0,在静态对象创建完后又给 a 重新赋值。