有人问过我,下面这个打印结果为什么是0
public class MyClass
{
private static int x = getValue();
private static int y = 5;
private static int getValue()
{
return y;
}
public static void main(String args[])
{
System.out.println(x);
}
}
在执行x初始化的时候,这个时候y并没有初始化 。
开始的时候x和y不都是静态变量吗?那不是一开始就要加载进静态代码区的吗?
如果你对JVM很了解,你会知道当JVM执行class类的时候,会先初始化成员变量,执行顺序为从上向下执行,所以会先初始化X,当初始化X的时候,发现调用了getValue()方法,而这个时候y其实是没有初始化的,所以这个时候会返回一个0
所以证明:静态变量也有顺序的!
时间: 2024-10-08 21:42:19