声明时初始化变量的值

时间:2015-11-23 06:40:24

标签: java

有人可以解释一下为什么以下程序产生 10 0 ?我希望 10 10 ;

public final class Testing {
    static int j = function1();
    static int i = 10;

    public static void main(String[] args) {
    System.out.println(i);
    System.out.println(j);
    }

    public static int function1() {
    return i;
    }

}

1 个答案:

答案 0 :(得分:2)

static变量按照它们出现在类源代码中的顺序进行初始化。因此,在初始化j时,i默认仍为0,因此function1会返回0,而j会初始化为0 }。

j初始化为0后,i初始化为10main打印100 }。

JLS 12.4.2

  

接下来,执行类的类变量初始值设定项和静态初始值设定项,或接口的字段初始值设定项,按文本顺序,就像它们是单个块一样。