我读到in this question Java总是按值传递。因此,即使是引用也是按值传递的。
我不明白这是什么意思,有人可以帮我解释一下吗?
最佳答案
鉴于此
Object ref = new Object();
ref
实际上是存储一个值,一个对象的某个地址。比方说1234
。
当您通过ref
时周围
public void method(Object passed) {...}
...
method(ref);
Java 实际上复制引用的值并将其分配给参数。所以,passed
还将具有值 1234
.
同样,如果你有
Object otherRef = ref;
值1234
将被复制并分配给 otherRef
。
如果您随后重新分配 otherRef
,比如
otherRef = new Object();
这将为 otherRef
分配一个新值,但是ref
仍然具有与以前相同的值。这就是值传递。
当你调用一个方法时
ref.toString();
Java 使用引用的值来查找引用的对象并调用方法。这称为解引用。
<小时/>您可能想要浏览 JPDA javadoc,从 StackFrame
开始。查看字段和类型,您将开始了解所有内容是如何映射的。例如,它有 getValues(..)
返回 Map<LocalVariable, Value>
的方法。这应该告诉您变量实际上并不存储任何内容。相反,它被映射到一个值,该值可能是 all sorts of things .
关于java - 按值传递引用意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22278185/