问题:引用变量和 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
大约两周前,我决定深入研究并最终学习一门编程语言。我来这里当然是因为我选择了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