Java 中的 Address 和 Reference 有什么区别?
What is the difference between Address and Reference in Java?
首先,我知道Java是按值调用。
但是,在某篇文章中,Java中没有地址,应该用引用这个词。在我看来,这两个词的解释是一样的。我错了吗?
address和reference有什么区别,你有这么严格的定义非要区分这两者吗?
有些人使用术语内存引用。那么这是地址吗?还是参考?
我在各个网站上搜索过,但找不到可以回答我问题的文章,所以我发布了这个问题。
谢谢。
Java 规范没有介绍地址的定义,所以如果我们不谈论 JVM 实现就没有这样的东西。
如果我们看得更深一点,我们可以说地址和引用之间的差异是由 GC 引起的。特别是通过它重新定位对象的能力。
假设我们在内存中有对象o
。它的地址是100500
。在 GC 之后,所有指向 o
的引用仍将指向它,但 100500
不是该对象现在所在的位置。
这只是我的意见。正如我之前所说,地址没有官方定义。
地址 - 对象在内存中的确切位置。
引用是一个变量,您可以通过它访问对象。
在 Java 中你可以 get memory location of object,但你可能不应该。
首先,我知道Java是按值调用。
但是,在某篇文章中,Java中没有地址,应该用引用这个词。在我看来,这两个词的解释是一样的。我错了吗?
address和reference有什么区别,你有这么严格的定义非要区分这两者吗?
有些人使用术语内存引用。那么这是地址吗?还是参考?
我在各个网站上搜索过,但找不到可以回答我问题的文章,所以我发布了这个问题。 谢谢。
Java 规范没有介绍地址的定义,所以如果我们不谈论 JVM 实现就没有这样的东西。
如果我们看得更深一点,我们可以说地址和引用之间的差异是由 GC 引起的。特别是通过它重新定位对象的能力。
假设我们在内存中有对象o
。它的地址是100500
。在 GC 之后,所有指向 o
的引用仍将指向它,但 100500
不是该对象现在所在的位置。
这只是我的意见。正如我之前所说,地址没有官方定义。
地址 - 对象在内存中的确切位置。
引用是一个变量,您可以通过它访问对象。
在 Java 中你可以 get memory location of object,但你可能不应该。