我知道java是通过值传递的。对于链表数据结构,方法size()和size1()之间有什么区别?我认为有一点是因为头和下一个参考点指向size1()中的相同内容。但结果是差异
public class IntList {
int item;
IntList next;
public IntList(int item, IntList next){
this.item = item;
this.next = next;
}
public int size(){
int size = 1;
while (next !=null){
size++;
next = next.next;
}
return size;
}
public int size1(){
int size = 1;
IntList head = next;
while (head != null){
size++;
head = head.next;
}
return size;
}
public static void main(String[] args) {
IntList L = new IntList(1,null);
L = new IntList(2,L);
L = new IntList(3,L);
L = new IntList(10,L);
L = new IntList(20,L);
System.out.println(L.size());
}
}
我对java中的引用方法感到困惑。
答案 0 :(得分:1)
它们在逻辑上是相同的,但size()
实际上将next
指向最终节点,因此下一个大小检查将返回1. size1()
使用局部变量遍历列表,因此对象状态不受影响。
答案 1 :(得分:1)