java指针,这两个循环之间的区别是什么?
我将数据存储在一个简单的链表结构中, java中这两个循环的区别是什么?我原以为第一个和第二个一样,代码更少,但它不起作用java指针,这两个循环之间的区别是什么?,java,list,pointers,syntax,Java,List,Pointers,Syntax,我将数据存储在一个简单的链表结构中, java中这两个循环的区别是什么?我原以为第一个和第二个一样,代码更少,但它不起作用 //1 temp = list.firstElement; while (temp != null) { temp = temp.nextElement; } temp = *data*; //2 if (list.firstElement == null) { list.firstElement = *data*; } else { temp = list.
//1
temp = list.firstElement;
while (temp != null) {
temp = temp.nextElement;
}
temp = *data*;
//2
if (list.firstElement == null) {
list.firstElement = *data*;
}
else {
temp = list.firstElement;
while (temp.nextElement != null) {
temp = temp.nextElement;
}
temp.nextElement = *data*;
}
为什么第二个会在列表中添加一些东西,而第一个却没有?第一个元素仍然为null当temp==null时,您将完全退出第一个循环,也就是说,您已经完全退出了列表
当temp.nextElement==null时,退出第二个循环,这特别意味着temp=无效的这同样意味着temp指向列表中的最后一个元素,您可以成功设置它的nextElement字段。在第一个循环中,您一直执行到当前元素为空,然后您为该值分配了一些内容,但没有人指向您的新值,因此它不可见 在第二个循环中,直到nextElement为空,然后分配该循环,以便有人指向它。在第一个代码段中,all temp=data;是否更改temp变量所引用的内容?它不会修改列表中的任何对象
+--+ +--+ +--+ +--+ temp->+--+
| |->| |->| |->| |->null | |
+--+ +--+ +--+ +--+ data->+--+
在第二个代码段中,当temp在列表中时,temp.nextElement=data;将数据分配给列表中实际存在的内容,从而修改列表
temp---+
V
+--+ +--+ +--+ +--+
| |->| |->| |->| |-------->+--+
+--+ +--+ +--+ +--+ | |
data->+--+