public class Dog {
public static Dog dog = new Dog();
static final int val1 = -5;
static int val2 = 3;
public int val3;
public Dog() {
val3 = val1 + val2;
}
public static void main(String[] args) {
System.out.println(Dog.dog.val3);
}
}
输出结果为-5
从这个结果来看,似乎val2
的初始化在dog
成员和实例化完成之前。
为什么会出现这样的顺序?
Dog
实例时,val1
的值将为 -5,但val2
仍设置为默认值 0。 - Sirac