繁体   English   中英

Java中的地址和引用有什么区别?

[英]What is the difference between Address and Reference in Java?

首先,我知道 Java 是按值调用的。

但是,在某篇文章中,Java 中没有地址这样的东西,您应该使用引用这个词。 在我看来,这两个词的解释是相同的。 我错了吗?

  1. address 和 reference 有什么区别,你有这么严格的定义,必须区分这两者吗?

  2. 有些人使用术语内存引用。 那是这个地址吗? 或者它是一个参考?

我在各个网站上搜索过,但找不到可以回答我问题的文章,所以我发布了这个问题。 谢谢你。

Java规范没有引入地址的定义,所以如果我们不谈论JVM实现,就没有这样的事情。

如果我们深入研究,我们可以说地址和引用之间的差异是由 GC 引起的。 特别是通过它重新定位对象的能力。

假设我们在内存中有对象o 它的地址是100500 在 GC 之后,所有指向o的引用仍将指向它,但100500不是该对象现在所在的位置。

这只是我的意见。 正如我之前所说,没有正式的地址定义。

地址 - 对象在内存中的确切位置。

引用是一个变量,您可以通过它访问对象。

在 Java 中,您可以获得 object 的内存位置,但您可能不应该这样做。

回答这个以纠正自己,如果我错了,请回复:

众所周知,我们进行编码是为了在计算机语言之间进行交流以供人类阅读。 因此,当我们说引用或引用变量时,我们指的是内存中的对象地址(可以是计算机自己语言中的任何内容)。 所以在堆栈内存中,我们持有对对象的引用(对象存储在堆内存中),而堆栈内存中的地址我们使用引用变量在人机之间进行解释。 作为前任。 我们创建了一个对象示例。 它被存储到堆内存中,它的地址是 3456。所以,我们将变量 sample 分配给这个地址 3456,以便在编码时更容易使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM