java中的Object Reference变量是什么?
引用变量是否包含对象的内存地址?
我很困惑。请解释一下。
答案 0 :(得分:21)
我不确定我是否能够正确回答这个问题,但是......
答案 1 :(得分:8)
java中的Object Reference变量是什么?
简单来说,它是一个类型为对象类型的变量;即某种类型java.lang.Object
或java.lang.Object
的子类型。
引用变量是否包含对象的内存地址?
可能是的,但可能没有。
这取决于JVM如何表示对象引用。在大多数JVM中,使用内存地址或指针在后台表示对象引用 。但它也可以表示为数组的索引......或其他东西。 (实际上,我已经搞砸了一个实验性的JVM,其中一个对象引用实际上是一个指针数组的索引。)
重点是Java对象引用是设计以隐藏表示/实现细节的抽象。实际的表示不应该与您有关...因为如果您使用纯Java编程并不重要。你无法掌握纯Java中的实际内存地址......这是一件好事。 JVM(特别是垃圾收集器)可能会在不告诉您的情况下更改对象的实际内存地址。如果一个应用程序可以获取并使用对象地址,那么就需要处理它,这是一个根本上很难解决的问题。
答案 2 :(得分:1)
对象引用变量就像c中的指针一样,但不完全是指针
它取决于JRE提供的一些JRE就像一个指针和一些其他JRE一样被视为指针的指针
所以refernce variable just define a way to reach your object
。 Java是独立于平台的语言,因此内存管理在不同设备中是不同的,因此难以提供到达对象的独特方式。
答案 3 :(得分:0)
是对象引用是保存真实对象的内存位置的变量
答案 4 :(得分:0)
在Java中,所有对象都由引用引用,例如
Object o = "foo";
上面的例子对对象“foo”有一个引用o。