Java 声明时初始化变量的值
谁能解释一下为什么下面的程序会产生10和0?。我希望10和10Java 声明时初始化变量的值,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
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。