首页 > 解决方案 > 问题:参考变量和while循环问题

问题描述

所以大约两周前,我决定深入研究并最终学习一门编程语言。当然,我在这里是因为我选择了 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 等等。任何帮助是极大的赞赏。提前致谢。

所有菜鸟中最菜鸟

标签: javaarraysvariablesreference

解决方案


首先它在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

推荐阅读