java - 按值传递引用意味着什么?

标签 java

我读到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/

相关文章:

java - 使用java设置http服务器

java - 为什么不更新值?

java - python 中是否有类似于 osgi 试图在 java 中解决的要求?

java - iText - PdfPTable RowSpan 使用 mytable.writeSelectedRows

java - android - 返回类实例中更改的数据

java - 如何导入 org.apache.commons.net.ftp.FTPClient

java - 有 boolean 池这样的东西吗?

java - 查找除数

java - 无法在 Apple MacPro 上启动新的 Android 应用程序

java - Java 中的高效 strtod?