问题:引用变量和 while 循环问题

Problem with: Reference Variable and while loop question

大约两周前,我决定深入研究并最终学习一门编程语言。我来这里当然是因为我选择了Java。除了大量的在线资源,我还购买了 Head First Java,我认为它在解释概念方面真的很棒。我不得不承认它给出的一些作业对于初学者来说真的很难,但我一直坚持到现在。有人可以告诉我这是怎么回事吗?赋值是为了判断哪个引用变量引用了哪些对象。并非所有参考变量都会被使用。

class HeapQuiz {

     int id = 0;

     public static void main (String [] args) {
       int x = 0;
       HeapQuiz [] hq = new HeapQuiz[5];
       while ( x < 3) {
           hq[x] = new HeapQuiz();
           hq[x].id = x;
           x = x + 1;
     }

     hq[3] = hq[1];
     hq[4] = hq[1];
     hq[3] = null;
     hq[4] = hq[0];
     hq[0] = hq[3];
     hq[3] = hq[2];
     hq[2] = hq[0];
  }
}

Here are the answers...

hq[1] -----> id = 1
hq[3] -----> id = 2
hq[4] -----> id = 0

我知道创建了一个数组。我想我理解 hq[x] 代表数组位置,但是 x 是如何分配的? JVM 在循环中是如何进行的?答案贴在上面,但我不知道循环是如何产生这些答案的。更具体地说,hq[1] 是如何引用 id = 1 的,hq[3] 是如何引用 id = 2 的等等。任何帮助是极大的赞赏。提前致谢。

所有菜鸟中最菜鸟

首先它在 while 循环中创建了 3 个对象:

hq[0] --> id = 0
hq[1] --> id = 1
hq[2] --> id = 2

然后洗牌:

hq[3] = hq[1];   // hq[3].id = 1
hq[4] = hq[1];   // hq[4].id = 1
hq[3] = null;    // null
hq[4] = hq[0];   // hq[4].id = 0
hq[0] = hq[3];   // null
hq[3] = hq[2];   // hq[3].id = 2
hq[2] = hq[0];   // null

所以你最终得到:

hq[0] --> null
hq[1] --> id = 1
hq[2] --> null
hq[3] --> id = 2
hq[4] --> id = 0