Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 声明时初始化变量的值_Java - Fatal编程技术网

Java 声明时初始化变量的值

Java 声明时初始化变量的值,java,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 funct

谁能解释一下为什么下面的程序会产生100?。我希望1010

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;
    }

}

静态
变量按照它们在类的源代码中出现的顺序进行初始化。因此,当初始化
j
时,
i
在默认情况下仍然是
0
,因此
function1
返回
0
j
被初始化为
0

j
被初始化为
0
之后,
i
被初始化为
10
,并且您的
main
打印
10
0

:

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


谢谢。。。为我提供清晰完美的解决方案。替换两行的顺序:static int i=10;静态int j=function1();这是因为i(整数)的内存在设置为10之前已初始化为0。