java - 问题:参考变量和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 等等。任何帮助是极大的赞赏。提前致谢。
所有菜鸟中最菜鸟
解决方案
首先它在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
推荐阅读
- c# - 一次更新多个 xaml 绑定
- android - 在 Android 上实现随机森林的方法
- bash - POSIX shell (sh) 将 stderr 重定向到 stdout 并将 stderr 和 stdout 捕获到变量中
- kubernetes - 使用 Istio 在 Kubernetes 集群上访问 Prometheus GUI
- javascript - 电子 - 无法生成 .exe
- amazon-web-services - 必须匹配查询在 Elasticsearch 中未按预期工作
- python - 如何将列表转换为字符串,以便将其保存在 txt 文件中?
- kubernetes - Kubernetes Pod 无法启动 - 1 个节点发生卷关联冲突
- css - fa class loads, fab class does not, the result is missing icons
- selenium - 如何使用从硒中检索到的元素?