9

java中的对象引用变量是什么?

引用变量是否保存对象的内存地址?

我很困惑。请解释一下。

4

5 回答 5

21

我不确定我是否能优雅地正确回答这个问题,但是......

  • 对象是类的实例,它存储在内存中的某个位置
  • 引用是用来描述指向对象所在内存位置的指针。
  • 变量是您可以在应用程序中访问该内存位置的一种方式(它的值是“变量”)。虽然变量只能指向单个内存地址(如果它不为空),但它可能会在应用程序的整个生命周期中更改并指向不同的位置
于 2013-05-12T04:14:32.470 回答
8

java中的对象引用变量是什么?

简单地说,它是一个类型为对象类型的变量;即某种类型,要么java.lang.Objectjava.lang.Object.

引用变量是否保存对象的内存地址?

可能是,但也可能不是。

这取决于 JVM 如何表示对象引用。在大多数 JVM 中,对象引用幕后使用内存地址或指针表示。但它可以表示为数组的索引......或其他东西。(实际上,我已经搞砸了一个实验性的 JVM,其中对象引用实际上是指向指针数组的索引。)

关键是 Java 对象引用是一种抽象,旨在向您隐藏表示/实现细节。实际的表示不应该关心你......因为如果你用纯 Java 编程并不重要。您无法在纯 Java 中获取实际的内存地址……这是一件好事。JVM(特别是垃圾收集器)可能会在不告诉您的情况下更改对象的实际内存地址。如果一个应用程序可以获取和使用对象地址,它就需要处理它,这是一个根本性的难题。

于 2013-05-12T04:23:31.533 回答
1

对象引用变量就像 c 中的指针,但不完全是指针。
它依赖于 JRE 提供一些 JRE 就像指针一样对待,而其他一些 JRE 被视为指针指针。
所以refernce variable just define a way to reach your object。Java 是独立于平台的语言,因此内存管理在不同的设备中是不同的,因此很难提供一种独特的方式来访问对象。

于 2013-05-12T04:25:00.397 回答
0

是 对象引用是保存真实对象内存位置的变量

于 2013-05-12T04:13:06.097 回答
0

在 Java 中,所有对象都被引用引用,例如

Object o = "foo";

上面的例子有一个对对象“foo”的引用,o。

于 2013-05-12T04:13:58.860 回答