java引用的一个问题?


    private static void printABC(Node head) {
        Node cur = head;
        while(cur != null){
            cur = cur.next;
        }
        cur = head;
        
    }

这段代码cur指向head之后用进行了遍历,两个是一个引用不应该head也是在同时遍历的么?为何最后还能够cur指回初始?

阅读 1.3k
1 个回答

Java 里全部都是值传递,没有引用传递。
但是有引用这个说法,而这个引用实际上指的是:变量存储的值是某个非基本数据类型的 引用关系
这个说法有点绕,按题目中所说的 cur,实质上只在

Node cur = head;

这里存的是 变量head所存储的 某个对象的引用关系
在这里,curhead指的是同个对象,进入循环之后则不然,

cur = cur.next;

这里是把 cur 储存的值改成了 cur.next所存储的 某个对象的引用关系

也就是说,在 Java 中,非基础数据类型的变量,存储的 都是一个 引用关系 ,变量可以与这个 引用关系 解除绑定,比如 cur = null,也可以解除后重新绑定一个新的 引用关系 cur = cur.next

Java引用 这个术语其实不是 C/C++ 世界的那种理解。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题