【发布时间】:2013-10-28 18:18:06
【问题描述】:
我很困惑为什么下面的代码不会改变节点 a 的数据:
public class Node{Node next; int data;}
public static void change(Node a)
{
a = a.next;
}
public static void main(String [] args){
Node a = new Node();
Node b = new Node();
a.next = b;
a.data = 1;
b.next = null;
b.data = 2;
change(a);
System.out.print(a.data); //Still 1, why isn't it changed to 2?
}
既然Node是一个对象,那么它的引用不是按值传递给方法的吗?这意味着对传入的节点所做的任何更改实际上都应该更改节点?
【问题讨论】:
-
我确定有一两个重复的 [一百] .. 像 stackoverflow.com/questions/40480/… 或 stackoverflow.com/questions/7893492/…
-
(上面的代码精确地不起作用,因为Java是Call by Value - 重新分配参数不影响变量/绑定来电者。)
-
我正在尝试理解在 java 中传递的参数,而不是真正尝试实现某些功能
标签: java memory pass-by-reference