一个Head First Java 上的基础习题,小白不理解。

h756611753 2017-09-19 09:55:12
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;
}//下面这7行我都不理解意思。上面的循环我知道。hq[0].id=0。但是引用变量的对象堆不是很理解。hq[0]null hq[1]id =1 hq[3]id=2 qh[4]id=0为什么是会这么对应。希望大牛解释一下。
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];
}
}
...全文
423 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XxPingEr 2017-09-19
  • 打赏
  • 举报
回复
引用 2 楼 h756611753 的回复:
意思是hq[3]是null,hq[0]的值赋予给了hq[4],hq[3]和hq[0]现在都是null,然后hq[2]调转赋值hq[3],hq[3]就是2,则hq[2]是null对吗?
对的,是这样的,但是需要注意的是赋值的顺序
h756611753 2017-09-19
  • 打赏
  • 举报
回复
意思是hq[3]是null,hq[0]的值赋予给了hq[4],hq[3]和hq[0]现在都是null,然后hq[2]调转赋值hq[3],hq[3]就是2,则hq[2]是null对吗?
XxPingEr 2017-09-19
  • 打赏
  • 举报
回复
只是简单的调转赋值,前面两个是先直接赋值,后面的是把一个值赋值给另一个。可以这样理解 a=1; b=2; 把ab值对换 temp = a; a = b; b = temp; ----------------------------------------------------- hq[3] = null; hq[4] = hq[0]; hq[0] = hq[3]; hq[3] = hq[2]; hq[2] = hq[0]; 首先hq[3]是null并且赋值给了hq[0]所以是null, hq[0]是数组的第一个数字,所以是0,赋值给hq[4], hq[3]是通过hq[2]进行赋值的,数组是0.1.2每次+1所以值是2

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧