【www.gdgbn.com--C语言】

有人问过我,下面这个打印结果为什么是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
所以证明:静态变量也有顺序的!



本文来源:http://www.gdgbn.com/asp/13573/