private static void printABC(Node head) {
Node cur = head;
while(cur != null){
cur = cur.next;
}
cur = head;
}
这段代码cur指向head之后用进行了遍历,两个是一个引用不应该head也是在同时遍历的么?为何最后还能够cur指回初始?
private static void printABC(Node head) {
Node cur = head;
while(cur != null){
cur = cur.next;
}
cur = head;
}
这段代码cur指向head之后用进行了遍历,两个是一个引用不应该head也是在同时遍历的么?为何最后还能够cur指回初始?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
Java
里全部都是值传递,没有引用传递。但是有引用这个说法,而这个引用实际上指的是:变量存储的值是某个非基本数据类型的 引用关系。
这个说法有点绕,按题目中所说的
cur
,实质上只在这里存的是 变量
head
所存储的 某个对象的引用关系在这里,
cur
、head
指的是同个对象,进入循环之后则不然,这里是把
cur
储存的值改成了cur.next
所存储的 某个对象的引用关系。也就是说,在
Java
中,非基础数据类型的变量,存储的 值 都是一个 引用关系 ,变量可以与这个 引用关系 解除绑定,比如cur = null
,也可以解除后重新绑定一个新的 引用关系cur = cur.next
。Java
的 引用 这个术语其实不是C/C++
世界的那种理解。