首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JAVA向前引用的有关问题,郁闷死小弟我了

2012-05-27 
JAVA向前引用的问题,郁闷死我了。Java codeclass Z {static int peek() { return j }static int i peek(

JAVA向前引用的问题,郁闷死我了。

Java code
class Z {    static int peek() { return j; }    static int i = peek();    static int j = 1;}class Test {    public static void main(String[] args) {        System.out.println(Z.i);//输出为0    }}

 先问各位大神一个问题:1.一个类(比如:Z)的静态变量什么时候初始化?
 2.上面代码的 peek() 方法 return j; 是哪里的 j ,是不是代码内部有个隐藏的 thisclass ,就像这样 return thisclass.j;
3.上面的代码到底是怎么执行的?为什么 i=0 而不是 1 呢?


[解决办法]
这个问题基本上也是周周有啊。

1.一个类(比如:Z)的静态变量什么时候初始化?
——在类定义装载时就开始初始化;

2.上面代码的 peek() 方法 return j; 是哪里的 j ,是不是代码内部有个隐藏的 thisclass ,就像这样 return thisclass.j;
——return j;就是你下面定义的 static int j
——准确的说是:return Z.j;

3.上面的代码到底是怎么执行的?为什么 i=0 而不是 1 呢?
——因为初始化的过程是,先分配存储空间,再顺序执行初始化值的操作;
——所以一开始所有静态变量的存储空间都分配好了,然后再开始执行初始化值的操作。

热点排行